2014-01-20 2 views
1

확장 기능의 값을 스팬에 표시하기 위해 녹아웃을 사용하려고합니다.knockout이 확장 함수 내에서 observebles를 업데이트하지 않습니다.

<input type="text" data-bind="value: clientName" /> 
<span data-bind="text: clientName.dummy"></span> 

그리고 내 자바 스크립트 코드 : "더미는"자체 관측이기 때문에, 내가 기대 한 행동이

Model = function() { 

//MyExtension definition 
ko.extenders.MyExtension = function(target, options) { 
    target.dummy = ko.observable('hello'); 

    target.subscribe(function(newValue){ 
     target.dummy = ko.observable(new Date().toString()); 
     target.dummy.notifySubscribers(); //this shouldn't be necessary 
    }); 

    return target; 
}; 

this.clientName = ko.observable().extend({MyExtension: "some options here"}); 

}; 

myModel = new Model() 
ko.applyBindings(myModel); 

입니다

:

1) User changed input box text 
2) knockout trigers the subscribe function (and this is hapening) 
3) dummy value is updated with current time (happens to) 
4) The span's text is updated with last dummy value (this is not happening) 
다음

내 HTML입니다

그 이유는 무엇입니까? 감사합니다. .

추신 : http://jsfiddle.net/AYLv8/5/

답변

1

당신은 당신의 subscribe 기능의 새로운 완전히 새로운 관찰로 dummy 속성을 재정의 다음은 전체 테스트입니다.

올바른 구현은 dummy 관찰을 업데이트하는 것입니다 :

target.subscribe(function(newValue){ 
    target.dummy(new Date().toString()); 
}); 

데모 JSFiddle.

관련 문제