我使用knockoutJS,当我想要关闭一个块div
或h
html标记时出错。
发生错误的我的Javascript代码:
function myModel(){
this.flags = false;
this.getFlag = ko.computed(function(){
if(this.flags == false){
this.flags = true;
}else{
this.flags = false;
}
console.log(this.flags);
return this.flags;
});
}
ko.applyBindings(new myModel());
我的HTML:
<button data-bind="click: getFlag">Click button</button>
<h3 data-bind="visible: getFlag()">test visible</h3>
当我点击我的按钮时,我在浏览器控制台中显示此消息:
false未捕获错误:除非您,否则无法将值写入ko.computed 指定“写”&#39;选项。如果您想阅读当前值,请不要 传递任何参数.knockout-3.3.0.js:44 gknockout-3.3.0.js:83 (匿名函数)
当我编写没有函数ko.computed()
this.flags = false;
this.getFlag = function(){
if(this.flags == false){
this.flags = true;
}else{
this.flags = false;
}
console.log(this.flags);
return this.flags;
};
我在浏览器控制台中收到此消息:
真
当我按下按钮时,我有false
等true
false
true
false
,但visible
无法正常工作。
有什么问题?
答案 0 :(得分:0)
首先,您需要将属性声明为observable:
var self = this;
self.flag = ko.observable(false);
接下来我们进行切换以来回切换标志:
self.toggleFlag = function(){
self.flag(!self.flag());
}
现在你可以绑定:
<button data-bind="click: toggleFlag">Click button</button>
<h3 data-bind="visible: flag">test visible</h3>