我正在尝试按照 Hottowel SPA 模板中的视图模式创建一个简单的剔除计算 observable。最好的方法是什么?
我最初有这样的事情:
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 中用于视图模型的模块模式。所以我的问题是:
为什么我原来的方法不起作用?有没有比我的第二种方法更好或替代的方法来定义视图模型?