2012-08-14 68 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/