这是小提琴 - http://jsfiddle.net/iRamesh/36N4m/
不确定为什么计算的observable没有返回任何值.我知道如何使它工作,但不知道为什么当前的代码不起作用.请帮忙
RP *_*yer 11
计算的observable在创建时立即进行评估.在您的情况下,viewModel
尚未创建,因此这会导致错误.
几种选择:
- 在初始对象文字之外创建它:
var viewModel = {
firstName: ko.observable("r"),
lastName: ko.observable("j"),
};
viewModel.fullName = ko.computed(function() {
return viewModel.firstName();
});
Run Code Online (Sandbox Code Playgroud)
- 在函数中创建视图模型:
var ViewModel = function() {
this.firstName = ko.observable("r");
this.lastName = ko.observable("j");
this.fullName = ko.computed(function() {
return this.firstName();
}, this);
};
ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)
对象文字很容易创建,这使它们很棒.但这是我更喜欢使用函数创建视图模型的原因之一.使用对象文字,您可以扩展视图模型并创建计算...或者使用该函数,您可以在一个函数语句中完成所有操作,正如@RPNiemeyer指出的那样.
另一种选择是使用我最喜欢的揭示模块模式:http://jsfiddle.net/johnpapa/36N4m/1/
var viewModel = (function() {
var
firstName = ko.observable("r"),
lastName = ko.observable("j"),
fullName = ko.computed(function() {
return firstName();
});
return {
firstName: firstName,
lastName: lastName,
fullName: fullName
}
})();
ko.applyBindings(viewModel);?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2746 次 |
最近记录: |