2017-07-27 7 views
2

したがって、次のようにコンポーネントと属性ディレクティブがあります。 <my-component my-directive>コンポーネントのディレクティブを破棄する

コンポーネントが破棄されたときは、$scope.$destroy();($ scopeはコンポーネントコントローラに挿入されています)を呼び出します。

内部の指示link私はこのようなリスナーを持っています: $scope.$on('$destroy', function() {...と問題はそれが機能していないということです。それらは異なるスコープであるようです。

今私は回避策があります

は、コンポーネントコントローラに

require : '^myComponent',$ctrl.scope = $scope;を追加し、myComponent.scopeを使用する - それは動作します。

質問は次のとおりです。どのようにコンポーネントの破壊内部ディレクティブを聞くことができますか?

加え:これそれはあなたがスコープの$ctrlプロパティを使用して、ディレクティブからコントローラにアクセスすることができます何か

答えて

1

を変更する場合にmyComponent$compileを使用して作成され、 そして、コンポーネントコントローラのインスタンス上の指示から$onDestroy(...)を使用、(スコープ内で$on('destroy',...)の代わりに)、コンポーネントスコープの破棄をリッスンします。

+0

これは私の回避策とほぼ同じです。しかし、より良い、よりネイティブな方法があるかどうか疑問に思う – k102

+1

うん、しかし、コンポーネント破壊のためのドキュメントは '$ onDestroy()lifecycle hook'を使ってコントローラ内の$ scope($ destroy)インスタンスを置き換えると言います。 –

+0

Isntそれはただの砂糖ですか? – k102

関連する問題