Ember.js / handlebars如何将传递给组件的变量绑定到模型

时间:2016-01-25 23:22:57

标签: ember.js handlebars.js

让我们说我有一个名为" Article"只有一个名为" title" ...

的属性

我可以编写hanblebars来编辑文章属性,如下所示:

<span>Title</span><span>{{input value=title}}</span>

Ember /把手神奇地将输入框的值绑定到&#34;标题&#34;财产价值。

没问题。但我正在开发一个项目,我需要根据模型定义模型动态生成车把代码。

例如,我不知道有一个名为&#34; title&#34;的属性,而是转而进入&#34; modelFields&#34;列表在模型定义模型中。

所以,车把将是这样的:

查看以下代码:

{{#each modelField in modelFields}}
    <span>modelField.displayName</span><span>{{input value=modelField.propertyName}}</span>
{{/each}}

&#34;标题&#34;的结果HTML财产将是:

<span>Title</span><span><input value="title"></span>

现在这是我的问题,有没有办法让这个值从propertyName(在这个例子中为title)动态地由ember作为绑定属性标题处理,而不是字符串标题?

澄清一下,有没有办法解决这个问题:

{{#each modelField in modelFields}}
    <span>modelField.displayName</span><span>{{input value=modelField.propertyName}}</span>
{{/each}}

被视为此(标题是绑定属性):

<span>Title</span><span>{{input value=title}}</span>

而不是这个(标题是一个字符串):

<span>Title</span><span><input value="title"></span>

我尝试了视图,组件,没有运气。

1 个答案:

答案 0 :(得分:1)

我在另一篇文章中找到答案,帮助我找到解决方案。帖子是:

Ember.js: TextField with dynamic binding

虽然,为了我的目的,我不得不稍微调整他/她的解决方案:

Ember.Handlebars.helper('dataTextField', function (key, options) {
    options.hash.valueBinding = 'controller.' + key;
    return Ember.Handlebars.helpers.input.apply(this, [options]);
});

在我打电话的模板中:

{{#each modelField in modelFields}}
    <span>{{modelField.displayName}}</span>
    <span>
        {{dataTextField modelField.name}}
    </span>
{{/each}}