没有Em.Textfield的文本字段的双向绑定

时间:2012-10-12 15:34:29

标签: ember.js

我试图做这个

<input type="text" {{bindAttr value="controller.term"}}>

但是无法正常工作,更改只能在控制器上运行。我强迫使用以下

{{view Em.TextField valueBinding="controller.term"}}

有一种方法可以在不使用上一个代码段的情况下完成此操作吗?

2 个答案:

答案 0 :(得分:2)

为什么不扩展Ember.TextField来做你想做的事?

让我确切地知道你要做什么,我敢打赌我们可以通过这种方式找到解决方案。当我知道更多的sepcifics时,我会编辑我的答案,但是现在:

扩展Ember.TextField

假设您想在输入上放置一个maxlength和一个占位符。

App.MyTextField = Ember.TextField.extend({
  maxlength: 20,
  placeholder: 'Some placeholder text',
  attributeBindings: ['maxlength', 'placeholder']
});

然后你可以把它放在你的模板中:

{{view App.MyTextField valueBinding="controller.term"}}

答案 1 :(得分:2)

我很好奇 - 你为什么不想使用Ember.TextField?

带有{{bindAttr value="controller.term"}}的模板不会将更改从视图传播到控制器,因为视图不知道其值已更改。您必须自己处理changekeyUpfocusOut个事件并相应地更新数据。猜猜是什么 - 使用Ember.TextField时你可以免费得到这些。

如果您仍想采用第一种方式,请查看Ember.TextSupport - 此mixin支持从视图到控制器的数据流。