给出以下代码:
self.pcsList = ko.observableArray(ko.utils.arrayMap(pcs, function (pc) {
return {
obCurHp: ko.observable(pc.curHp), obMaxHp: ko.observable(pc.hp),
obHpPerc: ko.computed(function(){return Math.round(this.obCurHp() / this.obMaxHp())*100 + "%";})
};
}));
obHpPrec 不会评估任何内容,因为 this.obCurHp()
和 this.obMaxHp()
都不是事物,obCurHp()
也不是事物> & obMaxHp()
.
我需要访问当前 pcsList 对象的这些成员,以便可以构造计算对象。我该如何去做呢?
最佳答案
您需要将每个上下文中的 this
分开。您可以拥有一个子模型,然后为每个元素创建一个新实例。
var mainViewModel = function (){
var self = this;
self.pcsList = ko.observableArray(ko.utils.arrayMap(pcs, function (pc) {
return new pcListItemViewModel(pc);
}));
}
var pcListItemViewModel = function (pc){
var self = this;
self.obCurHp = ko.observable(pc.curHp);
self.obMaxHp = ko.observable(pc.hp);
self.obHpPerc = ko.computed(function(){
return Math.round(self.obCurHp() / self.obMaxHp())*100 + "%";
});
}
关于javascript - 访问家长的成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41339078/