当我调用“点击”功能时,我的DOM不会更新。 它确实更新了数据模型。当我发出警报();在Click函数中,我可以看到正确的值。
HTML:
<div data-bind='foreach: Areas'>
<table>
<tbody data-bind="foreach: Categories">
<tr>
<td>
<div data-bind='click: Click'>
<span data-bind="text: name"></span>
</div>
<div data-bind='visible: visible'>
<div data-bind="foreach: products">
<div data-bind="text: text1"></div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
JavaScript的:
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);
}
同样重要的是:Categories数组加载了一个json对象。我怀疑它必须对此做些什么。
答案 0 :(得分:1)
不要替换你的observable,改变它的状态:
Categorie.visible(toggleContentBool(Categorie.visible()));
您的代码正在用布尔值替换observable(并且总是将其切换为false
,因为您将函数引用传递给toggleContentBool
,并且函数引用是真实的。)
请记住,observable是函数。