我试着做这个
<input type="text" {{bindAttr value="controller.term"}}>
但不能正常工作,更改只能从控制器工作。我被迫使用以下
{{view Em.TextField valueBinding="controller.term"}}
有一种方法可以在不使用前面的代码段的情况下做到这一点?
我试着做这个
<input type="text" {{bindAttr value="controller.term"}}>
但不能正常工作,更改只能从控制器工作。我被迫使用以下
{{view Em.TextField valueBinding="controller.term"}}
有一种方法可以在不使用前面的代码段的情况下做到这一点?
为什么不扩展 Ember.TextField 来做你想做的事?
让我确切地知道您要做什么,我敢打赌我们可以通过这种方式找到解决方案。当我知道更多细节时,我会编辑我的答案,但现在:
假设您想在输入上放置一个 maxlength 和一个占位符。
App.MyTextField = Ember.TextField.extend({
maxlength: 20,
placeholder: 'Some placeholder text',
attributeBindings: ['maxlength', 'placeholder']
});
然后你可以把它放在你的模板中:
{{view App.MyTextField valueBinding="controller.term"}}
我很好奇 - 为什么你不想使用 Ember.TextField?
模板{{bindAttr value="controller.term"}}
不会将更改从视图传播到控制器,因为视图不知道其值已更改。您必须自己处理change
, keyUp
,focusOut
事件并相应地更新数据。猜猜看 - 使用 Ember.TextField 时您可以免费获得所有这些。
如果您仍然想采用第一种方式,请查看 Ember.TextSupport - 这个 mixin 支持从视图到控制器的数据流。