1

ドキュメントはこちら:

http://emberjs.com/guides/views/customizing-a-views-element/

ビューでクラス名を true/false 値にバインドする方法について説明します。モデル属性の 1 つをビュー クラス名にバインドする方法はありますか?

例えば

App.Category = DS.Model.extend({
    name:  DS.attr('string'),
    type: DS.attr('string'),  // The loaded model could have a type of 'typeA' or 'typeB'
});

App.CategoryView = Ember.View.extend({
   classNameBindings: ['type'],
   type: function(){
       return this.model.get('type'); // This doesn't work obviously
   },
   tagName: 'li'
});

レンダリングします

<li class="typeA"> [template_contents_are_here] </li>

編集:Ember 1.0rcの使用

編集 2

もう少し進んで、関数から値を返すことができるようになりました。ただし、最初の反復で正しい値のみが返されます。サーバーからロードされている一連のモデルがあり、それぞれが {{control}} ヘルパーを使用してレンダリングされています (したがって、レンダリングごとに新しいビューとコントローラーを作成します)

App.CategoryView = Ember.View.extend({
       classNameBindings: ['type'],
       type: function(){
           return this.controller.get('model.type');
       }.property()
       tagName: 'li'
   });
4

1 に答える 1

1

私はあなたのフィドルを更新しました:http://jsfiddle.net/mavilein/hutYc/8/

計算プロパティを定義するときは、依存するプロパティを宣言する必要があります。

App.CategoryView = Ember.View.extend({
   classNameBindings: ['type'],
   type: function(){
       return this.get('context.type');
   }.property("context.type"),
   tagName: 'li'
});

type属性へのアクセス方法を、これを行うためのより「エンバー風」な方法に置き換えたことに注意してください。ビューは常にそのコンテキストで機能する必要があります。

于 2013-02-24T21:43:25.883 に答える