【发布时间】:2016-05-31 04:34:40
【问题描述】:
我编写了一个代码,通过单击按钮显示或隐藏特定的 div。代码在this fiddle。
代码工作正常,但我怀疑当我在单击按钮时更改可观察到的a 和b 的值时,怎么会调用toShow 方法?
每当我的“testViewModel”发生变化时,它会被调用吗?
另外我什么时候必须在data-bind 中使用()?
HTML 代码:
<button data-bind="click: $root.changeValue">Click Me!</button>
<div data-bind="foreach: products">
<div data-bind="visible: $root.toShow()">
<div data-bind="text: name"></div>
<div data-bind="text: age"></div>
<div data-bind="text: gender"></div>
</div>
</div>
Javascript 代码:
function testViewModel(){
var self = this;
self.a = ko.observable(0);
self.b = ko.observable(0);
var prod = [];
for(var item in products){
prod.push(new productItem(products[item]));
}
self.products = ko.observableArray(prod);
self.changeValue = function(){
self.a(self.a()+1);
self.b(self.b()+1);
}
self.toShow = function(){
if(self.a() % 2 === 0){
return true;
}
else{
return false;
}
}
}
function productItem(product){
var self = this;
self.name = ko.observable(product.name);
self.age = ko.observable(product.age);
self.gender = ko.observable(product.gender);
}
var products = [
{
name: 'A',
age: 25,
gender: 'Male'
},
{
name: 'B',
age: 27,
gender: 'Female'
},
{
name: 'C',
age: 53,
gender: 'Female'
},
{
name: 'D',
age: 54,
gender: 'Male'
}
]
ko.applyBindings(new testViewModel());
【问题讨论】:
标签: javascript knockout.js data-binding