灰燼不能綁定到數組索引,所以你必須解決它。一種解決方案是將自己限制爲單向綁定,其中您的文本字段更新值散列。如果你打算在用戶按下一個按鈕後提交表單,這應該可以做到。
定義字段ID在你的控制器的陣列和哈希他們的價值觀進去。
App.ApplicationController = Ember.Controller.extend({
fieldIds: ['name', 'email', 'whatever'],
fieldValues: {} // {name: 'user', email: '[email protected]', ...}
});
現在延長Ember.TextField
更新您的哈希值,當文本字段更改。您需要通過每個實例fieldId
和來自控制器的對values
散列的引用。
App.TextField = Ember.TextField.extend({
fieldId: null,
values: null,
valueChange: function() {
var fieldId = this.get('fieldId');
var values = this.get('values');
if (values && fieldId) values[fieldId] = this.get('value');
}.observes('value')
});
模板很簡單。
{{#each fieldId in fieldIds}}
<label>{{fieldId}}</label>
{{view App.TextField fieldIdBinding="fieldId" valuesBinding="fieldValues"}}
<br/>
{{/each}}
Here it is fleshed out in a jsfiddle。
感謝 - 我用的方法與此非常相似。 – 2013-03-05 17:03:32
我是否需要在控制器中聲明App.TextField = Ember.TextField.extend({}),如果我只想要一個帶有valueBinding的普通文本字段? – 2014-02-19 15:15:07