Javascript 我的DOM没有';不更新,但我的数据模型更新

Javascript 我的DOM没有';不更新,但我的数据模型更新,javascript,knockout.js,Javascript,Knockout.js,调用“单击”函数时,我的DOM不会更新。 它确实更新了数据模型。当我发出警报时();在单击功能中,我可以看到正确的值 HTML: 同样重要的是:Categories数组会加载一个json对象。我怀疑它一定与此有关。不要替换你的可观察对象,改变它的状态: Categorie.visible(toggleContentBool(Categorie.visible())); 您的代码正在用布尔值替换可观察值(并且总是将其切换为false,因为您正在将函数引用传递到toggleContentBool,

调用“单击”函数时,我的DOM不会更新。 它确实更新了数据模型。当我发出警报时();在单击功能中,我可以看到正确的值

HTML:

同样重要的是:Categories数组会加载一个json对象。我怀疑它一定与此有关。

不要替换你的可观察对象,改变它的状态:

Categorie.visible(toggleContentBool(Categorie.visible()));
您的代码正在用布尔值替换可观察值(并且总是将其切换为
false
,因为您正在将函数引用传递到
toggleContentBool
,并且函数引用是真实的)


记住,观测值是函数。

谢谢,这就是它不起作用的原因。json负载将所有可观察变量都更改为平面变量。
Click = function (categorie) {
    //alert(toggleContentBool(Categorie.visible));
    Categorie.visible = toggleContentBool(Categorie.visible);
}

function toggleContentBool(switcher) {
    if (switcher) {
        return false;
    } else {
        return true;
    }
}

function TouchArea(jsonObject) {
    var self = this;
    self.productCategories = ko.observableArray(jsonObject.Categories);
}

function Product(text1, text2, text3, text4) {
    var self = this;
    self.text1 = text1;
};

function Categorie(name ) {
    var self = this;
    self.name = ko.observable(name);
    self.visible = ko.observable(true);
    self.products = ko.observableArray([]);
}

function dataLoader() {
    this.jsonTouchArea = '{"Categories":[{"name":"11111","visible":true,"products":[{"text1":"text"},{"text1":"text"}]},{"name":"22222","visible":true,"products":[{"text1":"text"},{"text1":"text"}]}]}';
    return JSON.parse(this.jsonTouchArea);
}
Categorie.visible(toggleContentBool(Categorie.visible()));