AngularJS指令:'&'在隔离范围内没有按预期工作

时间:2013-08-22 04:01:14

标签: javascript angularjs

我试图将一个方法从控制器传递到我的指令中。我就是这样做的:

在控制器中:

$scope.getEmployees = function()
{
    return {2: 'Jane', 3: 'Bob', 4: 'Smith'};
}

$scope.getSelected = function()
{
    return 3;
}

在视图/ HTML中:

<mydirective data-placeHolder="Choose an employee.." 
       data-getOpts="getEmployees()" data-getSelected="getSelected()" />

在指令中:

var dir = 
{
   restrict: 'E',
   templateUrl : 'views/mydirective.html',
   scope: {
       placeholder: '@',
       getSelected: '&',
       getOpts: '&'
   },   
   controller: ['$scope', '$element', '$attrs', 
       function($scope, $element, $attrs)
       {
           console.log( $scope.getOpts() );
       }],

};

MyApp.directive('mydirective', function()
 {
     return dir;
 });

但是,指令控制器中的以下行:

   console.log( $scope.getOpts() );

生成未定义而不是返回控制器的getEmployees()函数中设置的对象或函数。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

它与命名约定有关。您需要将驼峰案例转换为破折号分隔的单词,如此

data-get-opts="getEmployees()"