Ember.js:具有动态绑定的TextField

时间:2014-04-26 08:50:33

标签: ember.js ember.js-view

我想将TextField绑定到由字符串变量指定的属性(请参阅编辑以获得更好的解释),如this question中所示。不幸的是,那里给出的答案不再适用。他们在那里使用以下视图:

App.AutoTextField = Ember.ContainerView.extend({
    type: null,
    name: null,

    init: function() {
        this._super();
        this.createChildView();
    },
    createChildView: function() {
         this.set('currentView', Ember.TextField.create({
                    valueBinding: 'controller.' + this.get('name'),
                    type: this.get('type')
                }));   
    }.observes('name', 'type')
});

到目前为止,我所能做的最好的事就是用路径valueBinding替换_parentView.context.。如果我这样做,文本字段将被呈现,并且它们包含正确的值。如果我编辑它们,则应用程序的其余部分不会更新。

你如何在当前版本的Ember中解决这个问题?

修改 在链接的问题中给出了我想要做的更好的解释。我在当前上下文中有一个对象(比如object)和一个字符串(key)。我想要一个可以显示和呈现object[key]的值的文本字段。

3 个答案:

答案 0 :(得分:5)

经过多次尝试失败后,我找到了一个非常简单的解决方案。

添加帮助器

Ember.Handlebars.helper('dataTextField', function (data, key, options) {
    options.hash.valueBinding = 'data.' + key;

    return Ember.Handlebars.helpers.input.apply(this, [options]);
});

然后致电

{{dataTextField data key}}

这将呈现一个显示和更改data[key]值的文本字段,它甚至支持普通input帮助程序可以理解的所有可选参数。

答案 1 :(得分:1)

现在可以借助mut helper将输入值与对象的动态键(变量)绑定。

https://guides.emberjs.com/v2.6.0/templates/input-helpers/#toc_binding-dynamic-attribute

我们可以像这样绑定输入助手中的键,

{{input value=(mut (get Object key))}}

答案 2 :(得分:-1)

有点不清楚你的问题是什么用例,但假设你只想尝试在文本字段上运行基本绑定,那么绑定值的最简单方法是使用输入助手:

在您的模板中,您将使用:

{{input type="text" value=inputTextValue}}

其中inputTextValue是要绑定值的属性。然后在您的控制器中,您可以访问inputTextValue属性以获取用户输入的值,或者设置显示给用户的值。

这是一个工作小提琴:

  

http://jsfiddle.net/NQKvy/940/

您可以在此处的Ember文档中找到有关输入帮助程序的更多信息:

  

http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_input

希望有所帮助。