2012-02-06 11 views

答えて

4

私はあなたがそうのようなカスタムビューを作成する必要がありますと思う:

App.FieldView = Ember.View.extend({ 
    classNames: 'field clearfix'.w(), 

    defaultTemplate: Ember.Handlebars.compile('<div>{{view LabelView}}{{view DataView}}</div>'), 

    label: '', 

    /** 
    * Class representing the label tag 
    */ 
    LabelView: Ember.View.extend({ 
    tagName: 'label', 

    attributeBindings: ['for'], 

    'for': '', 

    textBinding: 'parentView.label', 

    defaultTemplate: Ember.Handlebars.compile('{{text}}') 
    }), 

    /** 
    * Class representing the data capture control. 
    */ 
    DataView: null, 

    /** 
    * Set the 'for' attribute for the label to that of the data view 
    */ 
    willInsertElement: function() { 
    this._super(); 

    var childViews = this.get('childViews'); 
    var labelView = childViews[0]; 
    var dataView = childViews[1]; 
    labelView.set('for', dataView.$().attr('id')); 
    } 

}); 

あなたはその後、

ドロップダウンのためのテキストボックス

MyApp.MyField= MyApp.FieldView.extend({ 
    label: 'Label Text', 

    DataView : Ember.TextField.extend({ 
    valueBinding: 'MyApp.pageController.myFieldData' 
    }) 
}); 

またはこのようなためにそうようにそれを使用することができます

MyApp.MyField= MyApp.FieldView.extend({ 
    label: 'Label Text', 

    DataView : Ember.Select.extend({ 
    ... 
    }) 
}); 

これが役に立ちます。

+0

これは素晴らしいです!私は大丈夫だった方法を考え出しましたが、これはとてもきれいでいいです。あなたの努力に感謝します! –

+0

'MyApp.FieldView'(' label'プロパティと同じように)の下に 'value'プロパティを作成し、それにデータコントロール値をバインドしてみてください。 'valueBinding: 'parentView.value''のようなものです。 – Veebs

関連する問題