执行角度函数

时间:2016-10-28 12:49:20

标签: javascript angularjs angular-material

我有一个像这样的HTML按钮

<md-button type="button"  ng-click="commentDelete(item,$index)" aria-label="change address" >
<md-icon md-svg-icon="img/ic_highlight_remove_24px.svg"></md-icon>
</md-button>

这是我的控制器

var commentDelete = function(item,index){
   console.log('working')
} 

$scope.commentDelete =commentDelete;

这没有任何问题。 但如果我尝试这样的事情

var myCtrl= function(item,index){
   return {
      commentDelete : function(item,index){
        console.log('working')
      }
   }
} 

 $scope.commentDelete =myCtrl.commentDelete

然后它不会触发 commentDelete 函数。这是为什么?提前谢谢

1 个答案:

答案 0 :(得分:3)

因为您为$scope.commentDelete分配了myCtrl的属性(myCtrl是一个函数,它试图在其上或commentDelete中找到FunctionmyCtrl只是一个函数,它返回一个带有函数commentDelete的对象。

var myCtrl= function(item,index){
   return {
      commentDelete : function(item,index){
        console.log('working')
      }
   }
} 

 $scope.commentDelete = myCtrl.commentDelete

如果您致电myCtrl然后获取commentDelete,则会有效

$scope.commentDelete = myCtrl().commentDelete;