gpt4 book ai didi

javascript - Ember 中 HTMLBars Helper 的动态绑定(bind)属性

转载 作者:行者123 更新时间:2023-11-28 00:27:16 24 4
gpt4 key购买 nike

我有一个属性名称列表 attrs,我想对其进行迭代,为每个属性创建一个输入,并绑定(bind)到模型上的该属性。下面表达了我想要的功能:

{{#each attr in attrs}}
{{input value=model.get(attr) }}
{{/each}}

当然,这实际上不起作用,因为您无法在助手中进行方法调用。我发现this question ,但该解决方案在我的 Ember 版本 (1.11.0) 中不起作用 - 我收集的原因是 this 在版本 1.11.0 的帮助程序定义中未定义(请参阅 here )。

我怎样才能做到这一点?

最佳答案

如果您只想从模型中获取一个由每个循环的当前值命名的属性,您可以编写一个助手,例如:

Ember.Handlebars.helper('input-helper',
function(model, attr) {
return Ember.get(model, attr);
}
);

然后像这样使用它:

{{#each attr in attrs}}
{{input-helper model attr}}
{{/each}}

这将打印以模型中的#each迭代中包含的attr命名的属性

如果您想将该值绑定(bind)到输入,您可以创建一个组件或 View 来为您执行此操作,而不是创建助手:

// 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}}

Here is an Example

关于javascript - Ember 中 HTMLBars Helper 的动态绑定(bind)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com