2013-08-22 125 views
0

我想从控制器传递一个方法到我的指令。这是我如何做它: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()函数中设置的对象或函数。

我在做什么错?

回答

2

它涉及命名约定。您需要将骆驼案例转换为破折号分隔的单词,如下所示

data-get-opts="getEmployees()" 
+0

@ClickUpvote LOL。我喜欢那个视频......龙珠岩石! – zsong