angularjs指令传递参数输出控制器

时间:2017-02-10 13:44:53

标签: javascript angularjs

我正在向指令发送控制器方法。我希望得到参数frpm direvtive like events。

DEMO

var app = angular.module("app", []);

app.controller("outCtrl", function($scope){
        $scope.callOut = function(pramFromDirective){
        console.log(pramFromDirective);
    }
})


app.directive("myDir", function(){
  return {
            restrict: "E",
            scope: {
                call: "&"
        },
            controller: function($scope){
            $scope.call({message: 444});
        }
  }
})

我想将参数发送到outCtrl.callOut()方法。但事实并非如此。

2 个答案:

答案 0 :(得分:1)

您必须在模板中添加参数,其名称与您传递给$scope.call()的对象的属性相同。由于您将其称为$scope.call({message: 444}),请执行:

<my-dir call="callOut(message)"></my-dir>

答案 1 :(得分:0)

您的模板不太正确。您需要让回调方法绑定中的参数与您在指令中使用的对象键的名称完全匹配。

<div ng-app="app">
  <div ng-controller="outCtrl">
    <my-dir call="callOut(message)"></my-dir>
  </div>
</div>

Angular实际上没有直接传递参数。它将指令函数调用参数$scope.call({ message: 444 })中的对象键映射到模板call="callout(message)"中方法的参数名称。