使用可见的 knockoutJS 时出错

error when working with knockoutJS visible

我使用 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 Uncaught Error: Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.knockout-3.3.0.js:44 gknockout-3.3.0.js:83 (anonymous function)

当我写 javascript 没有函数的代码时 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 falsevisible 不起作用. 有什么问题?

所以首先你需要将你的属性声明为可观察的:

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>