Emberjs正在监视从父组件传递来的变量更改吗?

时间:2019-02-08 08:24:44

标签: javascript ember.js

我在子组件上有以下代码以监听更改

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方法。我在哪里错了?

  

请注意,它们都是组件,其中一个是另一个组件内的子组件。感谢您的帮助

1 个答案:

答案 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://github.com/emberjs/rfcs/blob/be351b059f08ac0fe709bc7697860d5064717a7f/text/0000-tracked-properties.md

https://www.pzuraq.com/coming-soon-in-ember-octane-part-3-tracked-properties/

https://glimmerjs.com/guides/tracked-properties