在knockoutjs中,如何绑定属性并在属性更改时更新视图?

时间:2016-07-20 22:08:59

标签: javascript knockout.js

我在这里的学习可能是一种误解。

我正在设置我的viewmodel绑定被设置为“观察”javascript对象的属性。我创建了一个间隔计时器来切换对象的属性,但我的UI没有反映更改。如何通知框架对象的属性已更改并相应更新?

直播示例:http://liveweave.com/Xfrcrv

<p>Section 1 <span data-bind="visible : hasErrors">***</span></p>

<script>
var myObj = {sectionhasErrors : true}
var vm = {
  hasErrors : ko.observable(myObj.sectionhasErrors)
};

ko.applyBindings(vm);
var iTimer = setInterval(function () {
  myObj.sectionhasErrors = !myObj.sectionhasErrors
  console.log('toggled!');
},5000);  
</script>

1 个答案:

答案 0 :(得分:0)

淘汰赛不能&#34;观察&#34;对象的各个属性。您必须将整个对象放在一个observable中。

<p>Section 1 <span data-bind="visible : myObj().hasErrors">***</span></p>
var myObj = {
  hasErrors: true
}

var vm = {
    myObj: ko.observable(myObj)
};

ko.applyBindings(vm);

var iTimer = setInterval(function () {
  var myObj = vm.myObj();
  myObj.hasErrors = false;
  vm.myObj(myObj);
  console.log('toggled!');
},5000); 

在我看来,你还没有掌握一些基本的Knockout概念。我建议你通过他们网站上的tutorials工作。