Ember单向输入不会更新其值

时间:2017-04-18 18:27:17

标签: javascript ember.js

我有一个自定义组件作为输入(在我的应用程序中它做了更多的事情,但我想保持相同的结构,所以我将原生输入包装到组件中)。

然后,当用户更改输入的值时,我调用闭包操作来格式化用户提供的值(例如我将其大写),并将其设置为某个属性(在输入中应该对用户可见)。

当我粘贴一些小写的字符串(例如abc),然后没有删除或添加任何内容时,问题就发生了我只需选择所有内容并从剪贴板粘贴(再次abc)。在第二次粘贴时,调用格式化闭包动作,甚至调用属性的setter(我已尝试使用自定义set计算属性),但我的组件的输入保持未格式化。

我提供了最小的Ember Twiddle:https://ember-twiddle.com/5448bb455fd8732cc87f6ed8f2d44c12

1 个答案:

答案 0 :(得分:0)

该值在application controller的操作处理程序中更新。在该处理程序中,调用toUpperCase并将结果设置为a

在第二次通话中,由于a未更改,value的{​​{1}}不会更改。因此组件不会重新渲染。粘贴的价值将保持不变。

您可以通过向my-input添加{{log (concat 'test' a)}}行来观察此情况。它只会打印一次。

要使其正常工作:将制作application.hbs逻辑放到uppercase组件中。它会简单地工作。看看this twiddle,你可以实现类似的组件。