从数组内部取消引用 JavaScript 属性



我正在尝试取消引用JavaScript对象上的属性,但没有得到预期的结果。

我有一系列 Knockout 视图模型(我不认为问题特定于 Knockout(,每个模型都有一个可观察的Selected.我向此可观察量添加订阅,以便在更改Selected的值时调用一个函数crossSelectTargetLangs

此外,我在for...循环中添加此订阅。

var tl = 0,
tlMax = allLangVMs.length,
vmLang,
selectedCode;
// for each 'vmLang' view-model in the 'allLangVMs' array...
for (; tl < tlMax; tl++) {
// local variable for the context view-model    
vmLang = allLangVMs[tl];
// add the subscription to this observable    
vmLang.Selected.subscribe(function() {
// de-reference the vmLang.Code property
selectedCode = (function(code) {
return code;
}(vmLang.Code));
// pass the de-ref'd value to the target function    
crossSelectTargetLangs(selectedCode);
});
}

但是,无论哪个视图模型更新了其Selected可观察性,传递给目标函数的参数始终是数组中最后一个元素的Code它似乎没有取消引用。

我做错了什么?

问题是你在错误的地方进行了取消引用。 代码应如下所示:

var tl = 0,
tlMax = allLangVMs.length,
vmLang,
selectedCode;
// for each 'vmLang' view-model in the 'allLangVMs' array...
for (; tl < tlMax; tl++) {
// local variable for the context view-model    
vmLang = allLangVMs[tl];
(function(vmLangParam) {   
vmLangParam.Selected.subscribe(function() {   
crossSelectTargetLangs(vmLangParam.Code);
});
})(vmLang);

}

相关内容

  • 没有找到相关文章

最新更新