Можете ли вы поместить вызов функции в выражение AngularJS? - PullRequest
0 голосов
/ 25 апреля 2018

Я слежу за угловым курсом в W3School, и меня смущает вопрос, почему я не могу поместить вызов функции в угловое выражение - просто для удовольствия, даже если это может оказаться не лучшим решением, если я выясню это позже:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
function add() { return 5+5 }
</script>
<body>

<div ng-app>
<p>My first expression: {{ add() }}</p>
</div>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Глобальные функции по умолчанию связаны с 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>
0 голосов
/ 25 апреля 2018

Можно, но функция должна быть определена в контроллере, поскольку именно там нотация {{ }} направляет 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...