HottowelSPAテンプレートのviewmodalパターンに従って計算された単純なノックアウトを作成しようとしています。これを行うための最良の方法は何ですか?
私はもともとこのようなものを持っていました:
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
title: 'Home View',
testField: ko.observable("This is a test"),
testComputedField: ko.computed(getComputed, this)
};
return vm;
//#region Internal Methods
function getComputed() {
return "Computed: " + this.testField();
}
function activate() {
logger.log('Home View Activated', null, 'home', true);
return true;
}
//#endregion
});
しかし、これはエラーになりますが、理由は100%わかりません。
TypeError: this.testField is not a function
少し試行錯誤しながら、私はこれにたどり着きました。
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
title: 'Home View',
testField: ko.observable("This is a test")
};
vm.testComputedField = ko.computed(getComputed, vm);
return vm;
//#region Internal Methods
function getComputed() {
return "Computed: " + this.testField();
}
function activate() {
logger.log('Home View Activated', null, 'home', true);
return true;
}
//#endregion
});
しかし、これがこれを行うための非常にきれいな方法であるかどうかはわかりません。私は明らかに、HotTowelのビューモデルに使用されるモジュールパターンをうまく理解していません。だから私の質問は:
元の方法が機能しないのはなぜですか?2番目の方法よりもビューモデルを定義/構造化するためのより良いまたは代替の方法はありますか?