2012-08-14 67 views
0

當我們改變使用jQuery的東西時,有沒有辦法激活訂閱?淘汰js,使用jquery進行更改後使用訂閱。

例如:

var MyModel = function(){ 
var self = this; 
this.ImageUrl= ko.observable("Image.jgp"); 
} 

var Model = new MyModel(); 
ko.applyBindings(Model); 
Model.ImageUrl.subscribe(function (NewValue) 
{ 
console.log(NewValue); 
}) 

<img data-bind:"attr{src: ImageUrl}" id ="image1" src = "" alt= "new image"/> 

,我使用jQuery來的改變src:

$("#button1").click(function(){ 
$("#image1").attr("src","image2.jpg"); 
}) 

這是一個小例子,我不知道這是否是最好的選擇。

回答

1

attr綁定是單向綁定,所以它不會對元素的更改做出反應(不處理任何事件)。

敲除確實包含兩個稱爲ko.dataForko.contextFor的幫助函數,它們可以爲您提供給定DOM元素的當前數據/上下文。以下是我們的文檔:http://knockoutjs.com/documentation/unobtrusive-event-handling.html

所以,基本上,如果你想通過附加jQuery的事件處理程序,那麼你可能需要使用ko.dataFor,讓您的數據,然後你ImageUrl觀察到的直接更新。

以下是樣本:http://jsfiddle.net/rniemeyer/gbruu/