请参阅下面的示例代码。鉴于我有一个组件my-text-box
my-text-box.hbs
{{my-text-box value=modelName}}
我想value
通过didReceiveAttrs
钩子观察属性的变化,而不是observers
为了更好的性能。
my-text-box.js
didReceiveAttrs: function(args) {
if (args.oldAttrs == null) {
// This is the initial render, but I don't need to anything here.
} else if (args.newAttrs.value != args.oldAttrs.value) {
// supposed `value` was changed from outside, I can do something here...
// BUT, `args.newAttrs.value` is not always the prop value,
// `Ember` would automatically wrap it with `{{mut}}` helper.
// The data structure would be:
// {
// value: value,
// update: function (val) {
// source.setValue(val);
// }
// }
}
}
我想要的是我不必关心 attr 值是否是一个mutable
单元格,我应该得到一种总能获得真正价值的方法。我看到有一个HTMLBars hook
ember-htmlbars/hooks/get-value
,但它没有暴露给公共 API。我在想的是,也许Ember
应该改变两者newAttrs
并oldAttrs
拥有直接价值而不是那些mutable
对象。
有人有办法处理吗?谢谢!