我有一个 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/