你能在AngularJS表达式中调用函数吗?

时间:2018-04-25 14:21:45

标签: angularjs function call

我正在学习W3School的Angular课程,我很困惑为什么我不能在Angular表达式中调用函数 - 只是为了好玩,即使可能不是最佳实践,如果我稍后发现:

DELETE A FROM SOMEWHERE A JOIN (SELECT PROD_ID, MIN(DATE) OLDEST_DATE
FROM SOMEWHERE
GROUP BY PROD_ID) B ON A.PROD_ID=B.PROD_ID AND A.DATE=B.OLDEST_DATE
WHERE A.PROD_ID='me';

2 个答案:

答案 0 :(得分:2)

你可以,但是需要在控制器中定义函数,因为这是{{ }}符号指示Angular查看的地方。

angular.module('app', [])
  .controller('ctrl', function() {
    this.add = () => {
      return 5 + 5;
    }
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl as $ctrl">
  {{ $ctrl.add() }}
</div>

答案 1 :(得分:1)

默认情况下,全局函数绑定到window对象。因此,如果您在window对象中具有该功能,则可以将其直接绑定到控制器的$scope并在模板中使用它。

angular.module('app', [])
  .controller('ctrl', function($scope, $window) {
    $scope.add = $window.add;
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>

<script>
function add() { return 5+5 }
</script>

<div ng-app="app" ng-controller="ctrl">
  {{ add() }}
</div>