将ko.computed Array映射为observableArray
KnockoutJS Mapping ko.computed Array into observableArray
如问题所述,我试图使数组结果从ko.computed到可观察数组。我这样做的原因是,我想让我的数组结果中的所有对象是"可观察的"和解决方案,我试图找出是通过转移数组结果到不同的observableArray。我不能解释清楚,所以这里是我的代码(见注释行进一步解释):
//to make each objects observable
var DropDownHolder = function (itemID, itemName, amount, automatic) {
var self = this;
self.ID = ko.observable(deductionID);
self.Name = ko.observable(deductionName);
self.amount = ko.observable(amount);
self.automatic = ko.observable(automatic);
};
//temporary list, creates a new filtered array -- no problem here
self.temporaryDropDown = ko.computed(function () {
return ko.utils.arrayFilter(self.completeList(), function (completeItem) {
var sameItem = false;
ko.utils.arrayForEach(self.selectedItem(), function (pickedItem) {
if (pickedItem.itemID() == completeItem.itemID()) {
sameItem = true;
return;
}
});
return !sameItem;
});
}, self);
//put unpicked in dropdown -- problem here
//cannot transfer contents of temporaryDropDown to DropDown
self.DropDown = ko.observableArray();
self.DropDown(ko.utils.arrayMap(self.temporaryDropDown(), function (dd) {
return new DropDownHolder(dd.itemID, dd.itemName, dd.amount, dd.automatic);
}));
你的代码看起来很好,应该没问题
我相信
temporaryDropDown
是被计算出来的东西使它开火两次,即初始加载,然后获得[],然后获得实际数据。
查找应该触发多次的计算方法
相关文章:
- observablearray KnockoutJs中的对象
- Filtering observableArray
- 过滤observableArray时出现问题
- 检测observableArray是否发生变化
- UI中未更新Knockout ObservableArray
- 自定义过滤淘汰js observableArray
- KNOCKOUT js observableArray 不起作用
- ko observablearray:推送和直接分配之间的区别
- 嵌套的JSON数组和Knockout observableArray
- 无法将项添加到observableArray
- KNOCKOUT ko.observableArray 不会刷新视图
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 访问observableArray中的非对象
- ObservableArray.push()触发点击事件
- 将JSON映射到observableArray时出错
- Knockoutjs计算未从observableArray更新
- observableArray is not defined
- 可以't get return Array插入到knockoutjs observableArray中
- 从knockoutJS中的observableArray中删除Self
- 用新数据替换observableArray