当我点击.cloudChck复选框时,会调用cloudClicked,我得到JS错误"未捕获TypeError:boolean不是函数" 我想它调用了读取计算变量而不是写入函数。如何调用write函数?谢谢!
<input name="serviceType" value="Cloud" type="checkbox" class="cloudChck" data-bind="checked: isCloud, click: cloudClicked">
<input name="serviceType" value="Desktop" type="checkbox" class="desktopChck" data-bind="checked: isDesktop, click: desktopClicked">
function AppViewModel() {
...
this.isDesktop = ko.computed({
read: function (){
if (provinceId === "foo" || provinceId === 'bar') {
return true;
}
else return this.isDesktop;
},
write: function (value){
this.isDesktop = value;
},
}, this);
this.cloudClicked = function () {
if (this.isDesktop == true) {
this.isDesktop(false);
}
return true;
};
}
答案 0 :(得分:1)
用这段代码来解决问题...
this.isDesktop
被this.isDesktop = value;
Computed observables是依赖于一个或多个其他observable的函数,并且只要这些依赖项发生任何变化,它们就会自动更新。
您必须将this.isDesktop
的值保存到另一个可观察对象。
也...
this.cloudClicked = function () {
if (this.isDesktop == true) { //call computeds as a function this.isDesktop()
this.isDesktop(false);
}
return true;
};
您需要调用this.isDesktop()
来读取计算出的observable。
我会再次检查计算的observable上的docs ...但是不要放弃,淘汰赛值得学习曲线!