为什么我们需要在将函数传递给指令时指定括号?

时间:2016-08-26 17:22:44

标签: javascript angularjs

您好我是Angular的新手并尝试了指令。以下是代码

HTML

<div ng-app="scopetest" ng-controller="controller">
  <div phone action="callhome()"> </div>
</div>

的javascript

angular.module("scopetest", [])
.controller("controller", function($scope){
  $scope.callhome = function(){
    alert("called");
  }
})
.directive("phone", function(){
  return {
    scope: {
      action:"&"
    },
    template: "<button ng-click='action()' >Call</button>"
  };
});

我的问题是,如果我们将callhome函数传递给action属性,而ng-click我们用括号调用action函数,那么我们为什么要这样做?在phone指令ng-click='action()'上设置属性时需要指定括号?为什么ng-click='action'只能工作?我们已经指定action="callhome()"。两个地方为什么需要?

1 个答案:

答案 0 :(得分:4)

因为the attribute没有指定功能。它指定an expression。大多数情况下,您希望该表达式是函数调用(函数调用需要()(或applynew或等等。)

您可以指定其他内容:

ng-click="window.myGlobal = true;"