Просто интересно, что является лучшим способом связи с контроллером на директивную функцию, у меня есть ng-click на одной из кнопок, но функция сидит в директиве, есть способ, которым я могу вызвать функцию внутри контроллера (которая находится в директиве). Я понимаю, что вы можете применять двойное связывание с областью действия, есть ли лучший способ сделать это?Каков наилучший способ вызова функции в директиве от контроллера?
Приветствие
app.controller('leadsListing', ['$scope', function($scope){
$scope.filterresultcount = 0;
$scope.records = [];
$scope.filtertotal = '';
$scope.$watch('filtertotal', function(){
$scope.filterresultcount = parseInt($scope.filtertotal/20);
});
$scope.moreFilterResult = function(){
if($scope.filterresultcount > 0){
$scope.filterresultcount--;
}
$scope.heyJoe(); // It's in diretive
};
}]);
app.directive('recordfilter', ['$http', 'filterService', function($http, filterService){
return {
scope: {
names : '@names',
model : '@model',
records : '=records',
filtertotal : '=filtertotal',
filterresultcount : '=filterresultcount'
},
restrict: 'A',
replace: true,
link: function($scope, iElm, iAttrs, controller) {
$scope.heyJoe()
}
}
}
звучит благой мат, это лучше, чем при использовании сферы, у меня есть на голосовании и ждать, если есть лучшие ответы. – Bruce
Я предполагаю, что если вы хотите сделать что-то ближе к тому, что вы просили, вы можете создать пустой объект в области контроллера, передать его директиве с использованием привязки данных «=» и приложить к ней функцию в директиве, которая позже может быть вызван контроллером: http://jsfiddle.net/9pm3zg5s/1/ Тем не менее, я бы посоветовал ему, поскольку он создает явную зависимость между контроллером и директивой, что приводит к ошибке, если директива отсутствует или изменяет поведение. –
thumb up! спасибо за отличный ответ :) – Bruce