请参阅此jsFiddle
在将滤镜应用于数组之前,自动绑定非常有效。但是在向数组添加过滤功能后,模板不会自动刷新。
测试一下。
App.FieldRoute = Ember.Route.extend({
setupController: function(controller, model) {
//scenario 1
//controller.set('model', App.Fields);
//scenario 2
controller.set('model', App.Fields.filter(function(item, index, enumerable) {
if(item.id === model.id) return true;
}));
}
});
使用方案1运行jsFiddle(注释方案2并取消注释方案1),然后单击“性别”,然后单击“添加”按钮,该项将向项目添加项目,它将立即反映在UI中。
使用方案2再次运行jsFiddle。模板不会自动刷新。
答案 0 :(得分:0)
当您将App.Field设置为内容时,您的方案1有效,因为内容包含App.Fields数组的相同内存引用。因此,阵列上的推送或弹出将反映到内容中。但是,当您输入路径时,您的过滤操作(在setupController中)仅执行一次。
您可以在控制器中使用过滤模型
controller.setProperties({'model': App.Fields, filteringModel: model});
然后过滤您的内容
App.FieldController = Em.ArrayController.extend({
displayArray: function(){
return this.get('content').filterProperty('id',this.get('filteringModel.id'));
}.property('content.@each','filteringModel')
});
以下是fiddle