ember.js - EmberJS notifyPropertyChange 没有使其成为观察者?

标签 ember.js

我有一个组件,其中包含一个子组件列表(在父组件中使用 yield 绘制):

parent-component
  for item in items
    child-component item=item childProperty=parentProperty

在子组件内部,我在“childProperty”上有一个观察者,它可以在 parentProperty 更改时正确触发。问题是我想在属性实际上没有改变的时候触发那个观察者。

为此,在我的父组件中,我有:
this.notifyPropertyChange('parentProperty')
出于某种原因,这并没有进入子组件。这是一个 JS bin 显示:

http://emberjs.jsbin.com/caxedatogazo/1/edit

虽然我很高兴更多地讨论我的用例,但我更感兴趣的是 JS bin 是否应该工作,如果不能,为什么..

非常感谢您的帮助!

最佳答案

当您在 Controller 上调用 notifyPropertyChange 时,只有在 Controller 内注册的观察者才会收到属性更改的通知。

在您的情况下,观察者在组件 Controller 内,而不是在调用 notifyPropertyChange 的父 Controller 内。

有一种方法可以确保组件 Controller 收到属性更改的通知。这可以通过向组件添加以下方法来完成。

didInsertElement: function() {
  var controller = this.get('targetObject'); 
  controller.addObserver('foo', this, this.onDataChange);
},

我们正在做的是,获取父 Controller ,向父 Controller 注册 foo 的观察者。

这是 emberjs 的 fiddle :http://emberjs.jsbin.com/rajojufibesa/1/edit

希望这可以帮助!

关于ember.js - EmberJS notifyPropertyChange 没有使其成为观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513056/

相关文章:

templates - 如何为登录页面定义一个模板/ View /任何内容,但为其他页面定义默认模板/ View /任何内容

ember.js - 你如何处理 Ember 中的多元化?

ember.js - Ember 模型与内容?

ember.js - ember-simple-auth 多重身份验证器架构

ember.js - Ember-CLI 构建导致段错误

javascript - Google 使用 Ember.js 登录

javascript - Ember 项目中类的常规目录是什么?

javascript - Ember.js 在模型属性更改时如何更新链接到帮助程序 URL?

ember.js - `needs` 渲染模板前不等待数据返回

ember.js - transitionToRoute ('route' )来自组件内部