Пожалуйста, обратите внимание на это tryout on Plunkr.Вызов Директивы другой директивы
У меня есть простой набор до:
<body ng-app="myApp">
<div ng-controller="myController">
<parent-directive></parent-directive>
<child-directive></child-directive>
</div>
</body>
С родительской директивы определяется как:
app.directive("parentDirective", [
"$compile",
function (
$compile) {
return {
scope: {
person: "="
},
restrict: "E",
template: "<h3>I'm a parent</h3>",
controller: [
"$scope",
function ($scope) {
// --- PRIVATE --- //
var self = {};
$scope.ClickMe = function() {
alert('Parent clicked');
};
}],
link: function ($scope, $elem, $attrs) {
}
};
}]);
И ребенок директива определяется как:
app.directive("childDirective", [
"$compile",
function (
$compile) {
return {
scope: {
person: "="
},
restrict: "E",
require: "^?parentDirective",
template: "<h3>I'm a child, click <button ng-click='ClickMe()'>here</button></h3>",
controller: [
"$scope",
function ($scope) {
// --- PRIVATE --- //
var self = {};
$scope.ClickMe = function() {
alert('child clicked');
$scope.parentDirective.ClickMe();
};
}],
link: function ($scope, $elem, $attrs) {
}
};
}]);
child
нажмите обрабатывается , но щелчок, определенный на `parent ', возвращает undefined:
TypeError: Cannot read property 'ClickMe' of undefined
глядя на консоль.
Любая идея, что происходит не так?
Привет @Spikee вы должны проверить ссылку http://www.undefinednull.com/2014/07/07/Практическое руководство-pre-link-and-controller-methods-of-angle-directives/ – katmanco