Нокаут вычисляет оценку на всех страницах при соединении
Я только что заметил, что после того, как я конкатенировал свои js, все вычисляемые наблюдаемые наблюдаемые нокауты оцениваются и вызываются на всех страницах, даже если я не связываю модель представления, которая их содержит, это ожидаемое поведение? Если так, как я могу избежать этого?
1 ответ
Решение
Это исключительное поведение:
По умолчанию вычисляемая наблюдаемая имеет значение, определенное непосредственно во время создания.
Если вы хотите изменить это, вам нужно установить deferEvaluation
к истине:
тогда значение вычисляемой наблюдаемой не будет оцениваться до тех пор, пока что-то на самом деле не попытается получить доступ к его значению или не подпишется на него вручную.
Таким образом, ваши вычисления должны выглядеть следующим образом:
function AppViewModel() {
this.firstName = ko.observable('Bob');
this.lastName = ko.observable('Smith');
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this, { deferEvaluation: true });
}