请参阅以下小代码
<div>
You've clicked <span data-bind="text: numberOfClicks"></span> times
<button data-bind="click: incrementClickCounter">Click me</button>
</div>
<script type="text/javascript">
var viewModel = {
numberOfClicks : ko.observable(0),
incrementClickCounter : function() {
var previousCount = this.numberOfClicks();
this.numberOfClicks(previousCount + 1);
}
};
</script>
numberOfClicks
已被定义为视图模型中的属性,当从incrementClickCounter()
函数访问它时,就像this.numberOfClicks()
一样使用了括号,但为什么只是不明白。< / p>
如果我们像下面那样编写incrementClickCounter
函数会有什么危害。
incrementClickCounter : function()
{
this.numberOfClicks=this.numberOfClicks+1;
}
寻找建议和指导。感谢
答案 0 :(得分:1)
http://knockoutjs.com/documentation/observables.html
KO如何知道视图模型的某些部分何时发生变化?答:您需要将模型属性声明为可观察对象,因为这些是特殊的JavaScript对象,可以通知订阅者有关更改的信息,并且可以自动检测依赖关系。
如果你看the source of ko.observable()
,你会发现它做的不仅仅是将其设置为一个值。
答案 1 :(得分:0)
淘汰赛使用功能样式来访问属性是因为它支持古老的浏览器,如:
支持所有主流浏览器,甚至是古老的浏览器
IE6 +,Firefox 3.5 +,Chrome,Opera,Safari(桌面/移动设备)
答案 2 :(得分:-1)
var ViewModel = function() {
this.name=ko.observableArray('my name');
alert(this.name())
this.name1=ko.observableArray(['my name111'])
alert(this.name1())
this.name2=ko.observableArray([1,2,3])
alert(this.name2())
};
ko.applyBindings(new ViewModel());