1

次のように、テキストフィールドをオブジェクトの値にバインドしようとしています:

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

controller.currentTypescontroller.contextRemarks1 対多の緩やかな方法でのみ関連付けられます。

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 にアクセスしてユーザーの入力を見つけることができます。これは、私が思いつくことができる最も残り火のようなソリューションであり、「正しいソリューション」かもしれません。;)

于 2012-09-17T08:54:31.350 に答える