2017-07-27 40 views
2

所以我有一個組件和一個屬性指令,就像這樣: <my-component my-directive>

當組件被銷燬時,我打電話給$scope.$destroy();($ scope注入組件控制器)。

Inside directive's link function我有這樣的一個聽衆: $scope.$on('$destroy', function() {...問題是它不工作。看來這些是不同的範圍。

現在我有一個解決辦法:

在組件控制器

require : '^myComponent',添加$ctrl.scope = $scope;,並使用myComponent.scope - 那麼它的工作原理。

問題是:我怎麼能聽指令內的組件銷燬?

此外:這myComponent使用$compile創建的情況下,它改變的東西

回答

1

可以使用的範圍$ctrl屬性來訪問您的指令控制器, 然後在組件控制器實例使用$onDestroy(...)從您的指令(而不是範圍內的$on('destroy',...))偵聽組件範圍的銷燬。

+0

嗯,這和我的解決方法非常相似。但我不知道是否有更好的,更原生的方式 – k102

+1

hmm,但組件銷燬的文檔說'使用$ onDestroy()生命週期鉤子替換Controller中的任何$ scope。$('$ destroy')實例 –

+0

Isnt它只是一個糖? – k102