使用knockoutJS时出错

时间:2015-03-25 18:56:02

标签: javascript jquery html knockout.js

我使用knockoutJS,当我想要关闭一个块divh 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()

的javascript代码时
    this.flags = false;
    this.getFlag = function(){
        if(this.flags == false){
            this.flags = true;
        }else{
            this.flags = false;
        }
        console.log(this.flags);   
        return this.flags;
    };

我在浏览器控制台中收到此消息:

当我按下按钮时,我有falsetrue false true false,但visible无法正常工作。 有什么问题?

1 个答案:

答案 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>