2016-07-20 11 views
0

おそらく私のここでの学習の誤解。knockoutjsでプロパティにバインドすると、プロパティが変更されたときにビューが更新されます。

私の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> 

答えて

0

ノックアウトは、オブジェクトの個々のプロパティを "観察" することはできません。オブジェクト全体をオブザーバブルの中に入れなければなりません。

<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); 

あなたには、いくつかの基本的なノックアウトの概念を把握していないように私には思えません。あなたのウェブサイトでtutorialsを使って作業することをお勧めします。

関連する問題