我有一种情况,我想从ng-change的指令调用父控制器方法。对控制器方法的调用永远不会触发,不确定什么是错误的。 任何帮助将非常感激。 感谢
示例代码:
<body ng-app="content-app" ng-controller="ParentController">
<div header-menu report-manager="model"></div>
</body>
report-manager是一个典范。
标题菜单指令:
var $module = angular.module('content-app');
$module.directive('headerMenu', function () {
return {
restrict: 'AE',
scope: {
reportManager: '='
},
templateUrl: '/scripts/app/directives/header-menu.template.htm'
};
});
标题-menu.template.htm
<div>
<ul>
<li ng-repeat="filter in filters" ng-controller="ChildController" ng-change="method()" />
</ul>
</div>
ParentController。
angular.module('content-app')
.controller("MainController", ['$scope', function($scope) {
$scope.method = function () { // do something };
}]);
答案 0 :(得分:1)
方法需要通过"&"
传递到指令中,您可以使用“&amp;”传递函数
$module.directive('headerMenu', function () {
return {
restrict: 'AE',
scope: {
reportManager: '=',
method: "&" // needs to be passed into the headerMenu directive
},
templateUrl: '/scripts/app/directives/header-menu.template.htm',
link: function(scope, element, attrs){
scope.makeChange = function(){
scope.method();
}
}
};
});
HTML:
<div header-menu method="method()" report-manager="model"></div>
和
<li ng-repeat="filter in filters" ng-controller="ChildController" ng-change="makeChange()" />