2017-08-19 70 views
2

我跟了這post子組件沒有得到其父母的觸發事件

我有一個包含父組件(和它的稱呼):

$scope.$broadcast('searchNoFilter'); 

,幷包含一個子組件(和這就是所謂的):

$scope.$on('searchNoFilter', function(e) { 
    self.search(); 
}); 

父觸發事件, 但孩子的身體$on不叫。

我錯過了什麼?

+0

the're沒有足夠的信息真正告訴,發佈一些更多的代碼,使一個MVCE /普拉克。 – svarog

+0

@georgeawg我認爲你是對的。但模型將如何幫助?孩子會在這個模型上看到手錶嗎? –

+0

正在廣播的事件最有可能發生在偵聽器附加到子組件作用域之前。最好避免廣播事件。父元素中的事件修改父元素中的模型值。使用單向'<'綁定,將父級模型值綁定到子作用域。無論子組件何時實例化,模型值都會保留並可用。事件是短暫的,可以錯過。 – georgeawg

回答

1

Broadcastemit以不同的方式工作。廣播向兒童範圍發送事件,同時向父母發射。很可能你錯過了。如果您從rootScope廣播這應該可能工作。

查看詳情herehere

0

最有可能的監聽器連接到子組件範圍之前的事件被廣播發生。最好避免廣播事件。父元素中的事件修改父元素中的模型值。使用單向<綁定將父級模型值綁定到子組件作用域。無論子組件何時實例化,模型值都會保留並可用。事件是短暫的,可以錯過。