【发布时间】:2014-09-15 14:44:03
【问题描述】:
我正在寻找有关如何使以下内容发挥作用的一些指导: http://jsfiddle.net/gdefilippi/qgr1s51s/4/
在上面的小提琴中,我有两个 observableArrays。一个为另一个提供过滤器。这将应用于较大项目中的异步调用。
无论如何,我正在循环播放段,然后循环播放按段过滤的项目。那里一切都很好。
当我将新项目推入项目 observableArray 时,结果不会反弹。我将如何让重新绑定正常且轻松地工作。在下面的代码和 Fiddle 中,希望添加将项目推送到 observableArray 项目(请参阅 add 函数)更新,问题是绑定与过滤功能相反。
样品:
var vm = function(){
var self = this;
self.items = ko.observableArray([
{label:'item1',segment:1},
{label:'item2',segment:2}
]);
self.segments = ko.observableArray([
{title:'Segment 1',id:1},
{title:'Segment 2',id:2}
]);
self.bysegment = function(segment){
return ko.utils.arrayFilter(self.items(), function (_item){
return _item.segment === segment;
});
};
self.add = function(id){
self.items.push({
label:'new',
segment:id
});
alert(items().length)
};
};
ko.applyBindings(vm);
<!-- ko foreach: segments -->
<h1 data-bind="text: title + ' : ' + id"></h1>
<!-- ko foreach: bysegment(id) -->
<span data-bind="text: label + ' : ' + segment"></span>
<!-- /ko -->
<button type="button" data-bind="click: add">Add</button>
<!-- /ko -->
谢谢, 杰弗里
【问题讨论】:
标签: knockout.js ko.observablearray