Итак, я хочу, чтобы передать функцию (которая принимает 2 параметра) и определена в контроллере, в директиву и вызывается с параметрами из директива с директивными параметрами.Функция контроллера вызовов из директивы (с параметрами, переданными из директивы)
.on('click', function(d, i){
// here I want to call the function from the controller,
ctrlCB(d, i);
})
Мой контроллер выглядит как это:
(function() {
'use strict';
angular.module('d3')
.directive('verticalBarChart', verticalBarChart);
verticalBarChart.$inject = ['d3Service', '$window', '$parse'];
function verticalBarChart(d3Service, $window, $parse) {
return {
restrict: 'EA',
scope: {
data: '=',
click: '=click'
},
link: function (scope, element, attrs) {
d3Service.d3()
.then(function (d3) {
// some more d3.js stuff
svg.selectAll('rect')
.data(data).enter()
.append('rect')
.attr('width', barWidth)
.on('click', function (d, i) {
scope.click(d, i); // THIS IS THE ONE I'M INTERESTED IN !
// on click it calls the function, but the params don't get passed in
})
}
});
}
};
}
Директива:
<div vertical-bar-chart bar-padding="2" data="barData" click="clickCallback"></div>
и в контроллере я бы, например, иметь
$scope.clickCallback = function(d, i){
$location.url('/item/'+i)
}
Можете ли вы создать свое текущее решение на plunkr или jsfiddle? –
что не работает? – rob