我已经编写了自己的指令,我想在父指令上调用一个方法。我试过通过在我的指令中添加require:'ngController'来做到这一点。但是返回的控制器只是一个空对象。我正在运行1.4.8。
<html>
<head>
</head>
<body>
<button id="test1" onclick="OnSave()">Save</button>
<iframe id="test2" src="smth">//button inside that will fire OnSave event</iframe>
</body>
<script>
function OnSave() {
if ($("#test2").length)
{
alert("i see iframe");
}
else
{
//some code that will call Iframe via ajax
}
}
</script>
</html>
更新:我的错误是我在控制器范围添加了一个方法,而不是直接将它添加到控制器中。
<div ng-controller="myController">
<div my-directive></div>
</div>
app.directive('myDirective', function() {
return {
restrict: 'A',
scope: false,
require: '^ngController',
link: function (scope, $element, attrs, controller) {
//controller is empty object..
};
}
});
答案 0 :(得分:1)
如果您的指令没有独立的范围,并且您不需要scope
,则可以通过ngController
致电家长控制器。
angular.module('app', [])
.controller('controller', function($scope) {
$scope.greet = function() {
return 'hi'
};
})
.directive('testDirective', function() {
return {
restrict: 'E',
template: '<h1>{{ greet() }}</h1>'
};
});
输出:
hi
答案 1 :(得分:0)
该函数需要在指令范围内可用。因此,如果您的指令在控制器的范围内,那么它是:
scope.fn();