2

我试着做这个

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

但不能正常工作,更改只能从控制器工作。我被迫使用以下

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

有一种方法可以在不使用前面的代码段的情况下做到这一点?

4

2 回答 2

2

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

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

扩展 Ember.TextField

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

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

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

{{view App.MyTextField valueBinding="controller.term"}}
于 2012-10-12T16:25:34.733 回答
2

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

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

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

于 2012-10-12T16:30:27.683 回答