Мое требование - вызвать дочернюю директивную функцию из родительской директивы. В настоящее время мы внедрили шаблон публикации-подписки. Дочерняя директива подписывается на какое-то событие, и мы создаем триггер для родительской директивы. публикация подписки реализована через $.callbacks
Другими способами это можно сделать, используя широковещательную рассылку. Или дочерняя директива следит за некоторой переменной, и мы можем изменить эту переменную в родительской.
Мы не использовали трансляцию, потому что родительская директива содержит много дочерних событий, и мы не хотели, чтобы она проходила через все.
Есть еще один способ реализовать это, используя двустороннюю привязку функций.
directives.directive('twoWayBind', function () {
return {
restrict: "E",
transclude: true,
templateUrl: 'app/twoWayBindFunction.html',
scope: {
twoWayBinding: '='
},
controller: 'twoWayBindFunctionController',
bindAsController: true,
controllerAs: 'vm',
link: function (scope, element, attrs, controller) {
}
};
});
controllers.controller('twoWayBindFunctionController', ['$scope', function (scope) {
var vm = this;
vm.scope = scope;
scope.twoWayBinding = function () {
console.log('twoway bind');
}
}]);
мы можем вызвать функцию twoWayBinding из родительской области.
Я хотел бы понять, что является лучшей практикой.