【问题标题】:Why do we need to specify parenthesis while passing the function to a directive?为什么在将函数传递给指令时需要指定括号?
【发布时间】:2017-01-03 10:37:28
【问题描述】:

您好,我是 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 函数,那么为什么我们需要在设置电话指令ng-click='action()' 上的属性?为什么ng-click='action' 不起作用?我们已经指定了action="callhome()"。为什么两个地方都需要?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    因为the attribute 没有指定函数。它指定an expression。大多数时候,您希望该表达式是一个函数调用(并且函数调用需要()(或applynew 等)。

    您可以指定其他内容:

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

    【讨论】:

    • 谢谢。这是否意味着这也适用于我的指令action="callhome()"。为什么不action="callhome"
    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 2015-11-23
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多