Я просматриваю учебные материалы по выбыванию, и во всех примерах создается модель представления с использованием ключевого слова 'new':
//from learn.knockoutjs.com
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
}
ko.applyBindings(new AppViewModel());
Я стараюсь избегать использования нового ключевого слова, которое обычно работаетсовершенно нормально, но я не могу заставить работать вычисленное свойство fullName.Это то, что я до сих пор придумал.
function makeViewModel() {
return {
firstName: ko.observable("Bert"),
lastName: ko.observable("Bertington"),
fullName: ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this) };
}
ko.applyBindings(makeViewModel());
... что явно не получается, так как «this» больше не относится к локальному объекту внутри функции, передаваемой в computed.Я мог бы обойти это, создав переменную и сохранив модель представления, прежде чем присоединять вычисляемую функцию и возвращать ее, но если существует более элегантное и компактное решение, которое не требует от меня проверки того, что методы, которые зависят друг от друга, являютсяприлагается в правильном порядке, я бы хотел использовать это вместо.
Есть ли лучшее решение?