各ループの現在の値によって名前が付けられたモデルからプロパティを取得するだけの場合は、次のようなヘルパーを記述できます。
Ember.Handlebars.helper('input-helper',
function(model, attr) {
return Ember.get(model, attr);
}
);
そして、次のように使用します。
{{#each attr in attrs}}
{{input-helper model attr}}
{{/each}}
これは、その反復でattr
保持されるものに名前が付けられたプロパティを#each
model
ヘルパーを作成する代わりに、その値を入力にバインドしたい場合は、これを行うコンポーネントまたはビューを作成できます。
// component that binds 'object.property' to an input field
var InputBinderComponent = Ember.Component.extend({
prop: null, // passed in
obj: null, // passed in
value: null, // local
onValue: function() {
var obj = this.get('obj');
var prop = this.get('prop');
var value = this.get('value');
Ember.set(obj, prop, value);
}.observes('value'),
});
input-binder
コンポーネントのテンプレートに実際に入力を含める場合:
{{input type="text" value=value}}
そして、それをテンプレートで使用します。
{{#each attr in attrs}}
{{input-binder prop=attr obj=model}}
{{/each}}