我有一个控制器,它引用了一个指令。该指令有自己的控制器。我的指令有ng-file-upload(这本身就是另一个指令)。
我在指令中有一些字段需要作为数组传回主控制器。我该怎么做?
干杯!
答案 0 :(得分:1)
您是否可能在指令中使用隔离范围?您可以使用=
将范围值绑定到控制器范围,如下所示:
angular.module('appName').directive('directiveName', function() {
return {
restrict:'E',
scope: { boundScopeValue : '=' },
link: function(scope) {
scope.boundScopeValue = 'Beam me up scotty!';
}
}
}
有关隔离范围和各种范围方法的更多信息,请查看关于这个伟大的SO问题的答案:What is the difference between '@' and '=' in directive scope in AngularJS?
另一个很好的选择也是在控制器中定义一个函数,然后在你想要传入值并在控制器中执行操作时在你的指令中调用它。
答案 1 :(得分:1)
隔离范围将是在指令内部范围内映射外部范围成员的最佳选择。
但是,第二个选项的示例如下。
<div ng-controller="MyCtrl">
<div my-directive callback-fn="ctrlFn(arg1)"></div>
</div>
var app = angular.module('myApp',[]);
app.directive('myDirective', function() {
return {
scope: { someCtrlFn: '&callbackFn' },
link: function(scope, element, attrs) {
scope.someCtrlFn({arg1: 22});
},
}
});
app.controller('MyCtrl', function($scope) {
$scope.ctrlFn = function(test) {
console.log(test);
}
});