ember.js - Ember 组件可以观察 Controller 属性吗?

标签 ember.js

我有一个 Controller 和一个组件。当组件被渲染时,它以这种方式传递:

{{modal-filter feature=feature parentController=this.controller}}

其中 feature 是通过 Controller 传递给 Handlebars 的参数, parentController 是 Controller 。

现在,在 Controller 本身中,有一个属性(一个数组)。让我们称该数组为 requiredValues。

现在在 Controller /组件本身中,我们可以轻松设置:
valueObserver : function(){
     ...
}.observes('requiredValues')

但是,我需要从 modal-filter 组件中观察这个 Controller 属性。所以在 modal-filter 组件中,我会把什么作为观察者函数:
valueObserver : function(){
     ...
}.observes(???)

最佳答案

你不应该做什么,但我会告诉你如何做到完整

如果您传入 Controller ,则可以在 parentController 上观看项目。属性(property), 虽然我根本不推荐这个 .

valueObserver : function(){
     ...
}.observes('parentController.requiredValues')

这将假设整个数组被替换,而不仅仅是添加或更改的项目。

添加或删除的项目
valueObserver : function(){
     ...
}.observes('parentController.requiredValues.[]')

项目属性 foo 在 requiredValues 项目之一上发生了变化
valueObserver : function(){
     ...
}.observes('parentController.requiredValues.@each.foo')

你应该做什么

而不是传入 Controller ,只需传入属性,并观察属性。
{{modal-filter feature=feature property=someProperty}}


propertyObserver : Ember.observer('property', function(){
     ...
})

关于ember.js - Ember 组件可以观察 Controller 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103711/

相关文章:

ember.js - 在 Emberjs 中使用多个命名 socket 和没有内容的包装 View

ember.js - 如何从 View 的 init() 方法中获取任何 Controller 实例?

javascript - 如何在 Ember.js 模板中为 Twitter Bootstrap 轮播创建迭代器

javascript - Emberjs,每个 block 助手高级

javascript - 使用 Handlebars 在 Ember Octane 中切换类的正确方法?

ember.js - 访问渲染 View 中的 Controller

ember.js - Ember 表与 Ember 模型/Ember 数据集成

javascript - 在 ember.js 中访问模型外部的计算属性

ember.js - 当用户按 Enter 键时,Ember 刷新页面上的输入

javascript - emberjs 模板中的 Jquery 插件