Angularjs 在控制器和指令之间传递值
我有一个控制器,它引用一个指令。该指令有自己的控制器。我的指令有ng文件上传(这本身就是另一个指令) 指令中有一些字段需要作为数组传回主控制器。我该怎么做Angularjs 在控制器和指令之间传递值,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个控制器,它引用一个指令。该指令有自己的控制器。我的指令有ng文件上传(这本身就是另一个指令) 指令中有一些字段需要作为数组传回主控制器。我该怎么做 干杯 您是否在指令中使用了隔离作用域?您可以使用=将作用域值绑定到控制器作用域,如下所示: angular.module('appName').directive('directiveName', function() { return { restrict:'E', scope: { boundScopeValue :
干杯 您是否在指令中使用了隔离作用域?您可以使用
=
将作用域值绑定到控制器作用域,如下所示:
angular.module('appName').directive('directiveName', function() {
return {
restrict:'E',
scope: { boundScopeValue : '=' },
link: function(scope) {
scope.boundScopeValue = 'Beam me up scotty!';
}
}
}
有关隔离作用域和各种作用域方法的更多信息,请查看此问题的答案:
另一个很好的选择是在控制器中定义一个函数,然后在您希望在控制器中传递值和执行操作时在指令中调用它。隔离作用域是将外部作用域成员映射到指令内部作用域的最佳选择 但是,第二个选项的示例如下
<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);
}
});
var-app=angular.module('myApp',[]);
app.directive('myDirective',function(){
返回{
作用域:{someCtrlFn:'&callbackFn'},
链接:函数(范围、元素、属性){
scope.someCtrlFn({arg1:22});
},
}
});
应用程序控制器('MyCtrl',函数($scope){
$scope.ctrlFn=功能(测试){
控制台日志(测试);
}
});
我将此添加为答案,因为这最符合我的要求。非常感谢。这是一个有效的答案,但是我不希望将函数引用作为范围变量传递,这不是我的要求。谢谢你的回复+答案是:)