我認爲你必須創建像這樣的自定義視圖:
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({
...
})
});
希望這會有所幫助。
哇這真棒!我已經想出了一種可以工作的方式,但是這很乾淨而且很好。非常感謝你的努力! – 2012-02-06 22:29:57
嘗試在MyApp.FieldView下創建一個'value'屬性(就像'label'屬性一樣),然後綁定你的數據控件的值。類似於'valueBinding:'parentView.value''。 – Veebs 2012-02-06 23:07:29