Angularjs 在控制器和指令之间传递值

Angularjs 在控制器和指令之间传递值,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个控制器,它引用一个指令。该指令有自己的控制器。我的指令有ng文件上传(这本身就是另一个指令) 指令中有一些字段需要作为数组传回主控制器。我该怎么做 干杯 您是否在指令中使用了隔离作用域?您可以使用=将作用域值绑定到控制器作用域,如下所示: angular.module('appName').directive('directiveName', function() { return { restrict:'E', scope: { boundScopeValue :

我有一个控制器,它引用一个指令。该指令有自己的控制器。我的指令有ng文件上传(这本身就是另一个指令)

指令中有一些字段需要作为数组传回主控制器。我该怎么做


干杯

您是否在指令中使用了隔离作用域?您可以使用
=
将作用域值绑定到控制器作用域,如下所示:

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=功能(测试){
控制台日志(测试);
}
});

我将此添加为答案,因为这最符合我的要求。非常感谢。这是一个有效的答案,但是我不希望将函数引用作为范围变量传递,这不是我的要求。谢谢你的回复+答案是:)