2014-01-20 27 views
1

我想用淘汰賽來顯示擴展功能中的值。淘汰賽沒有更新擴展功能內的observebles

這裏是我的HTML:

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

我的Javascript代碼:

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) 

任何想法爲什麼? 謝謝。

PS:這裏是完整的測試:​​

回答

1

你是一個新的全新的觀察到在你的subscribe功能重寫你的dummy財產。

正確的實施方法是,更新dummy觀察到:

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

演示JSFiddle