我在子组件上有以下代码以监听更改
import Component from '@ember/component';
import Ember from 'ember';
export default Component.extend({
coordinates: Ember.computed("mouse_x", "mouse_y", function () {
let val = ` ${mouse_x},${mouse_y}`;
console.log(val);
return val;
}),
coords_change_observer: Ember.observer('coordinates', function () {
console.log(this.coordinates);
})
});
mouse_x 和 mouse_y 的值已正确设置,因为我已从视图中验证了这一点。我正在使用
将其从另一个组件传递给该组件
{{#application-properties mouse_x=mouse_x mouse_y=mouse_y}}
{{/application-properties}}
基本目标是侦听通过父级传递的变量的更改并对其进行处理。问题既不是computed
也不是observer
方法。我在哪里错了?
请注意,它们都是组件,其中一个是另一个组件内的子组件。感谢您的帮助
答案 0 :(得分:0)
由于Ember通过仅重用动态的DOM部分而非常有效,因此我发现文档中的import os
def key(filename):
return int(os.path.splitext(filename)[0][4:])
files = os.listdir(test_dir)
sorted_filenames = sorted([filename for filename in files], key=key)
和here对于我的应用程序中的许多项目也非常有用, t在组件模板中消耗了。
addObserver
还请注意,didInsertElement() {
this._super(...arguments);
// this is important b/c even though url may change, glimmer does not recognize this as a change and will not re-fire didInsertElement
this.addObserver('media.url', this, '_setHref');
}
是跟踪状态变化的新方法,如果您可以利用的话。
https://www.pzuraq.com/coming-soon-in-ember-octane-part-3-tracked-properties/