私が達成したいのは、(2つのパラメータを取る)関数を渡すことであり、コントローラ内でディレクティブに定義され、ディレクティブparamsを持つディレクティブ。指令からのコールコントローラ関数
.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