1

我正在尝试将文本字段绑定到对象中的值,如下所示:

{{#each type in controller.currentTypes}}
  <label>
    {{type.name}}
    {{view Ember.TextField valueBinding="controller.contextRemarks[type.id]"}}
  </label>
{{/each}}

controller.currentTypes并且controller.contextRemarks仅以松散的一对多方式相关。

currentTypes = [{id: 1, name: 'Type name 1'}]

我不知道我是否正在实施反模式,但我认为没有动态索引我就无法做到,而且 Ember 似乎不允许我在路径中使用索引。

我尝试使用额外的视图或助手来解决这个问题,但一直卡住。有没有解决这个问题的办法?

4

1 回答 1

0

所以我通过在控制器上添加一个计算属性并将生成的数组存储在一个私有属性中来解决这个问题:

App.MyController = Ember.Controller.extend({
  remarks: function() {
    var remarks = this.get('currentTypes') || [];
      this._remarks = remarks.map(function(remark) {
        return {
          id: remark.id,
          name: remark.name,
          value: ''
        };
      });

      return this._remarks;
    }.property('currentTypes')
  });
}

视图现在看起来像这样:

{{#each remarks}}
  <label>
    {{name}}
    {{view Ember.TextField valueBinding="value"}}
  </label>
{{/each}}

现在我可以访问 _remarks 来查找用户的输入,这是我能想到的最类似 ember 的解决方案,并且可能是“正确的解决方案。;)

于 2012-09-17T08:54:31.350 回答