我试图从subscribe回调中获取绑定元素。我一直试图找到一些可以指向正确方向但却找不到任何东西的东西。你能让我知道如何完成以下内容:
var ViewModel = {
var self = this;
self.Id = ko.observable();
self.Id.subscribe(function(newvalue){
//I want to get the element that the Id is bound to
//How can I do that?
});
}
感谢。
答案 0 :(得分:1)
嗯,你不能这样,但是你可以在change
事件上获得元素:
HTML:
<input data-bind="value: foo, event: { change: helloElement.bind($data, foo, $element) }" />
JS:
var model = {
foo: ko.observable(),
helloElement: function (value, element) {
console.log("Hi! I have the value " + value() + " and I live in the element: ", element);
}
};
ko.applyBindings(model);
答案 1 :(得分:0)
我最近遇到了类似的问题,幸运的是得到了一位才华横溢的人的帮助。
for (var row in obj){
if(typeof(obj[row]) == "function") {
obj[row].subscribe(function(r) {
return function(newValue) {
var _fieldName = r;
console.log(_fieldName, newValue);
// Do your stuff
};
}(row));
}
}
订阅功能需要一个功能,此功能的第一个参数是值(新/旧)。因此,不是编写内联函数,而是返回相同签名的函数,并将值绑定到此外部函数。
希望它有所帮助。
答案 2 :(得分:0)
你需要绑定什么语境&#34;这个&#34;会有你的订阅方法。像这样:
明确绑定:
this.property.subscribe(function(newValue) {
this.something(newValue);
}.bind(this));
或者你可以这样做:
this.property.subscribe(function(newValue) {
this.something(newValue);
}, this);
两种方法都有相同的结果。