EmberJS - 过滤数组删除模板自动绑定

时间:2013-07-23 11:13:37

标签: ember.js

请参阅此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。模板不会自动刷新。

1 个答案:

答案 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