我想将TextField绑定到由字符串变量指定的属性(请参阅编辑以获得更好的解释),如本问题所示。不幸的是,那里给出的答案已经不起作用了。他们在那里使用以下视图:
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')
});
到目前为止,我能得到的最好的结果是用路径_parentView.context.
替换valueBinding
。如果我这样做,文本字段将被渲染,并且它们包含正确的值。如果我编辑它们,那么应用程序的其余部分就不会更新。
在当前版本的Ember中,您将如何解决此问题?
编辑:我想做什么的更好解释在相关问题中给出。在当前上下文中,我有一个对象(比如object
)和一个字符串(key
)。我想要一个可以显示和呈现object[key]
值的文本字段。
在多次尝试失败后,我找到了一个非常简单的解决方案。
添加帮助者
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
助手可以理解的所有可选参数。
现在可以借助mut-helper将输入值与对象的动态键(变量)绑定。
https://guides.emberjs.com/v2.6.0/templates/input-helpers/#toc_binding-动态属性
我们可以像这样在输入助手中绑定密钥,
{{input value=(mut (get Object key))}}
从你的问题中还不清楚你的用例是什么,但假设你只是试图在文本字段上进行基本绑定,那么绑定值的最简单方法就是使用输入助手:
在您的模板中,您将使用:
{{input type="text" value=inputTextValue}}
其中inputTextValue
是要将值绑定到的属性。然后,在控制器中,您可以访问inputTextValue
属性以获取用户键入的值,或者设置显示给用户的值。
这是一把工作小提琴:
http://jsfiddle.net/NQKvy/940/
你可以在Ember文档中找到更多关于输入助手的信息:
http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_input
希望能有所帮助。