隔離されたスコープ(再利用可能なアイテムかもしれない)で親と子の間で通信するための最良のGENERICアプローチは何かを理解しようとしています。
子ディレクティブは(両方がスコープを単離した)いくつかの方法で、親ディレクティブを更新する必要がある場合、 は私がコールバック関数を渡す 必要があります意味:
例:
.directive('filterReviewStepBox', function() {
return {
restrict: 'EA',
scop: {
//some data
},
template: '<div>text<reusable-dir></reusable-dir call-back="foo"></div>',
link: function (scope, elem, attrs) {
scope.foo = function() {
console.log('bar');
};
}
};
}).directive('reusableDir', function() {
return {
restrict: 'EA',
scope: {
callBack: '=callBack'
//other data
},
template: '<div>text<button type="button" ng-click="bar"></button></div>',
link: function (scope, elem, attrs) {
scope.bar = function() {
scope.callBack();
}
}
};
});
または私は$を使用する必要があります発する():
例:
directive('filterReviewStepBox', function() {
return {
restrict: 'EA',
scope: {
// some data
},
template: '<div>text<reusable-dir></reusable-dir></div>',
link: function (scope, elem, attrs) {
scope.$on('foo', function() {
console.log('bar');
});
}
};
}).directive('reusableDir', function() {
return {
restrict: 'EA',
scope: { //some data
},
template: '<div>text<button type="button" ng-click="bar"></button></div>',
link: function (scope, elem, attrs) {
scope.bar = function() {
scope.$emit('foo');
};
}
};
});
私はまだわからない
がオンライン最善のアプローチを探してみましたが、イムはまだ
EDIT
を踏みつけているEMITが大規模に理解しやすいが、パフォーマンスとオーバーヘッドが心配だろうと感じますが、イムは私が
忘れてしまいました必要
オプション。 でも、これが最も正しい解決策であるかどうかはまだ分かりません。 これは私が子供や孫を再利用することを許可していないので、その種類の指示は単一目的の項目になります。
あなたは別のディレクティブのコントローラにアクセスすることができます 'require'オプションがあります。これはあなたが望むことをすることができるはずです。 – ieaglle
私はあなたが言っていることを見ている...それについて考えていない...しかし、私は子供が再利用可能にしたい場合はどうなりますか?あなたのアプローチは使用できません。 –
私の編集 –