У меня есть две директивы и контроллер, проблема в том, что я не могу вызывать функцию 'addMarkers()' контроллера из моей директивы.Как вызвать функцию контроллера из директивы ng-click?
я есть следующие коды:
derectives.js
app
.directive('collection', function() {
var tpl = '<ul><member ng-repeat="member in collection" member="member"></member></ul>';
return {
restrict: "E",
replace: true,
scope: {
collection: '='
},
template: tpl
}
})
app
.directive('member', function ($compile) {
var tpl = '<li><a ng-click="addMarkers(member)" >{{member.title}}</a>'+
'<input class="align" ng-if="!member.children" type="checkbox" ng-checked="true"/></li>';
return {
restrict: "E",
replace: true,
scope: {
member: '='
},
template: tpl,
link: function (scope, element, attrs) {
if (angular.isArray(scope.member.children)) {
element.append("<collection collection='member.children'></collection>");
$compile(element.contents())(scope)
}
}
}
})
controller.js
app
.controller('IndexCtrl', function($scope, itemProvider){
itemProvider.getItems().success(function(data){
$scope.items = data;
});
$scope.addMarkers = function(item){
alert("Helloo");
$scope.markers = itemProvider.addMarkers();
}
});
index.html
\t <div id="menu" ng-controller="IndexCtrl">
\t \t \t <nav>
\t \t \t \t <h2><i class="fa fa-reorder"></i>All Categories</h2>
\t \t \t \t <collection collection='items'></collection>
\t \t \t </nav>
</div> \t \t
Поскольку ваши директивы создания изолированных областей, метод родительской область addMarker не доступно. Вы можете передать его как параметр в объект определения директивы, в свойстве scope с & binding. – Chandermani