8

ユーザーアカウント(アイコン、名前、プロバイダーなど)に関するデータを含むコントローラーがあります。各ループの出力内に、その特定のモデルを介して渡されたプロバイダーに基づいて動的にCSSクラスを構築するビューがあります。

<script type="text/x-handlebars" data-template-name="accountItem">
{{#each account in controller}}
    {{#view App.AccountView}}
        <h4>{{account.name}}</h3>
        <img {{bindAttr src="account.icon"}} />
        <i {{bindAttr class="account.provider"}}></i>
    {{/view}}
{{/each}}
</script>

App.AccountView = Ember.View.extend({
    tagName: 'a',
    classNames: ['avatar-image'],
    providerClass: function(el) {
        // do something
    }
});

私が持っている質問は2つあります。

  1. 「アカウント」または現在繰り返されているアイテムをどのようにビューに渡しますか?
  2. 渡した後、どのように参照しますか?

これはかなり頻繁に起こることだと思いますが、例を見つけることができないようです。誰かがこれについていくつかの意見を提供できますか?

4

2 に答える 2

11

ビューには、より単純なアプローチを可能にするビューの特別なプロパティがあります。パーツcontentなしでモデルのプロパティの名前を使用するだけです。 また、コントローラーを反復処理する場合は、このガイドのように、ループ変数の名前を省略して代わりに使用できます。これは必須ではありませんが、コードを少しきれいにすることができます。 また、ビューのテンプレート内から、通常は外部変数を参照する必要はありませんが、必要に応じて..view.content.
this

{{#each controller}}
    {{#view App.IndexView contentBinding="this"}}
        <h4>{{name}}</h4>
        <img {{bindAttr src="icon"}} />
        <i {{bindAttr class="provider"}}></i>
        <i> {{icon}} </i>
        <i>{{provider}}</i>
    {{/view}}
{{/each}}

contentまた、ビュー内からいつでもプロパティにアクセスできます。

this.get('content');
于 2013-02-28T11:39:10.027 に答える
2

現在反復されているアイテムは、プロパティ バインディングを使用してビューに渡すことができ、テンプレートで "{{view.property}}" として参照できます。例えば:

{{#each account in controller}}
     {{#view App.IndexView itemBinding="account"}}
            <h4>{{view.item.name}}</h3>
            <img {{bindAttr src="account.icon"}} />
            <i {{bindAttr class="account.provider"}}></i>
              <i> {{view.item.icon}} </i>
              <i>{{view.item.provider}}</i>
        {{/view}}
{{/each}} 

上記のケース用に単純な jsfiddle を作成しました。確認して、問題を解決できたかどうかをお知らせください。

フィドルの URL : http://jsfiddle.net/nCyn6/3/

于 2013-02-26T09:21:09.420 に答える