3

テンプレートに次のようなコードがあります。

{{#each items itemController="item"}}

itemControllerいずれかの s のインスタンス内で兄弟 s への参照を取得する方法はありますitemControllerか?

4

3 に答える 3

0

アイテム コントローラーは間もなく廃止されます (こちらを参照してを検索してくださいitemController)。ユースケースの代わりに、次のようにコンポーネントを作成することをお勧めします。

App.XItemComponent = Ember.Component.extend({
  classNames: ['item'],

  actions: {
    startEdit: function(){
      this.set('beingEdited', true);
      this.set('disallowEdits', true);
    },
    finishEdit: function(){
      this.set('beingEdited', false);
      this.set('disallowEdits', false);
    }
  }
});

<script type="text/x-handlebars" data-template-name="components/x-item">
  {{ item }} 
  <button {{ action "startEdit" }} {{ bind-attr   
    disabled=disallowEdits}}>Edit</button>
  {{#if beingEdited}}
    <button {{ action "finishEdit" }}>Save</button>
  {{/if}}
</script>

disallowEditsコンポーネントが (コンポーネントが作成されたテンプレートのコントローラーを介して) 他のすべてのコンポーネントと共有するプロパティであり、beingEdited誰とも共有されないローカル コンポーネント プロパティです。

その後、次のようにテンプレート内でコンポーネントを使用できます。

<script type="text/x-handlebars" data-template-name="index">
  <ul>
    {{#each item in model}}
      <li>{{x-item item=item disallowEdits=disallowEdits }}</li>
    {{/each}}
  </ul>
</script>

完全な動作例はこちら

于 2015-02-26T14:52:20.617 に答える
0

振り返ってみると、技術的には正しいが、実際には正しくないため、この回答を削除しています。

于 2013-03-12T21:08:09.360 に答える