2017-02-20 139 views
1
app.controller('myController', [ 
    '$scope', function ($scope) { 
     $scope.doSum = function(x, y){ 
      console.log(x+y); 
     }; 
    } 
]); 


<cmp data-fn="doSum(x, y)"></cmp> 


app.directive('cmp', function(){ 
    return{ 

     templateUrl: 'ui/cmp.html' 
     , 
     replace: true 
     , 
     scope: { 
      dataFn: '&' 
     } 
     , 
     controller: ['$scope' function($scope){ 

       var v = $scope.dataFn({x: 1, y: 2}); 

       console.log(v); 

      } 
     ] 
    } 
}); 

我试图从控制器传递函数到angularjs 1.5中的指令。根据所有教程,这是如何完成的。但我无法让它工作。你能帮我么?该函数根本不传递,v导致未定义。将函数传递给指令angularjs 1.5

+0

你'doSum'函数返回的结果'X + y'而不是做一个控制台日志 – floribon

+0

为什么会调用'doSum'用对象工作?你会注意到你正在调用'$ scope.dataFn({x:1,y:2})'而不是'$ scope.dataFn(1,2)'。 –

+0

@MikeMcCaughan这是将本地值传递给表达式绑定的正确方法(使x和y在html中可用) – floribon

回答

0

问题是您的属性中的data-*前缀。它用于嵌入非标准HTML属性。

尝试从data-fn属性中删除data- *前缀。我肯定会工作。

我已为你JsFiddle example ...

W3Schools data-* attr

+1

你真棒:)非常感谢。这是问题所在。 – Seya

相关问题