Я хочу вызвать функцию контроллера в шаблоне директивы. Это не работает:Как вызвать функцию родительской области видимости в директиве
Контроллер:
myApp.controller('StartController', ['$scope', '$location', function ($scope, $location) {
$scope.changeLocation = function (path) {
$location.path(path);
}
}]);
index.html:
<div start-directive changelocation="changeLocation">
</div>
директива:
myApp.directive('startDirective', function ($templateRequest, $compile) {
return {
restrict: 'AE',
transclude: true,
link: function (scope, element, attrs) {
var baseSiteUrlPath = $("base").first().attr("href");
$templateRequest(baseSiteUrlPath + '/App/Templates/uxStart.html').then(function (html){
var template = angular.element(html);
element.append(template);
$compile(template);
});
}
};
});
и uxStart.html
<div class="box1 square1">
<button class="indexBtn" ng-click="$parent.changeLocation('/index')">Fahrplan & Buchung</button>
</div>
<div class="box2 square2">
<button class="serviceBtn" ng-click="changeLocation('/pageNotFound')">Services</button>
</div>
Что я делаю неправильно?
ТНХ заранее
спасибо. Мне также пришлось добавить область действия: {} в директиве. Тогда это сработало. –
@MinasMinas, если вы захотите добавить 'scope: {}' в свою директиву ... тогда вы должны передать этот метод внутри этой директивы изолированной области. Using '$ parent' в этом случае собирается беспорядок. –
без области действия не работает –