2012-11-14 6 views
1

아래 코드에서 테스트 버튼을 클릭 한 후 'click tested'라고 말하는 것이 좋습니다. selectedItem.title이 업데이트되는 것을 볼 수 있습니다. 이 데이터 바인딩이 작동하지 않는 이유는 무엇입니까?Knockoutjs Observable Binding

1 : -

<button data-bind="click: setItem">Test</button> 
Item <span data-bind="text: $root.selectedItem.title"></span> 
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre> 

http://jsfiddle.net/TheMetalDog/C7k6d/

var viewModel = {}; 
viewModel.selectedItem = ko.observable(); 

viewModel.setItem = function() { 
    viewModel.selectedItem({title: 'clicked'}); 
}; 

ko.applyBindings(viewModel); 

답변

0

당신은 여기에 두 가지 오류가 있습니다. 모델에 바인딩을 적용하고 버튼을 클릭 할 때까지 존재하지 않는 title 속성을 사용합니다. 모델의 속성을 사용하는 경우 바인딩하기 전에 정의해야합니다.

viewModel.selectedItem = ko.observable({title: null}); 

2. 관측 자료를 사용할 때는 ()을 입력해야합니다. 변수가 아니라 함수 여야합니다.

<span data-bind="text: $root.selectedItem().title"> 

그리고 당신은 여기에 http://jsfiddle.net/fMKPs/

을 재생할 수 있습니다 : 그래서 당신이 필요