我知道我可以访问订阅变量的newValue但是如何访问它的名称:
for ( var i = 0; i < carSelects.length; i++) {
var carId = $(carSelects[i]).attr('carId');
self["cars_" + carId + "_selected"] = ko.observableArray();
self["cars_" + carId + "_selected"].subscribe(function(newValue) {
// here i want to access the name of the subsribed variable
// i.e. "cars_" + carId + "_selected"
});
}
答案 0 :(得分:3)
试试这样:
for ( var i = 0; i < carSelects.length; i++) {
var carId = $(carSelects[i]).attr('carId');
(function(name){
self[name] = ko.observableArray();
self[name].subscribe(function(newValue) {
alert(name);
});
})("cars_" + carId + "_selected");
}
答案 1 :(得分:0)
作为解决方案,您可以使用所需属性而不是ko.observableArray()分配类;
例如,您有课程
function CarClass(carId, changeCallback) {
this.carId = carId;
this.array = ko.observableArray();
var self = this;
self.array..subscribe(function(newValue) {
changeCallback(self.carId, newValue);
});
}
然后在更改功能中获取车辆ID:
for ( var i = 0; i < carSelects.length; i++) {
var carId = $(carSelects[i]).attr('carId');
self["cars_" + carId + "_selected"] = new CarClass(carId, function(carId, newValue) {
});
}
答案 2 :(得分:0)
这是一个黑客,但您可以通过event.srcElement
获取订阅变量的名称,并获取元素&#34;数据绑定&#34;的值。属性,如下所示:
var id= $.trim(event.srcElement.attributes["data-bind"].value.split(':')[1])