Почему я не могу использовать оператор предварительного увеличения в `ng-mousemove` в AngularJS? - PullRequest
0 голосов
/ 10 ноября 2019

Почему я не могу использовать оператор предварительного увеличения в ng-mousemove в AngularJS?

Вот мой код:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

  <div ng-app="myApp" ng-controller="myCtrl">

    <h1 ng-mousemove="++count;">Mouse Over Me!</h1>

    <h2>{{ count }}</h2>

  </div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.count = 0;
});
</script> 

</body>
</html>

count не увеличивается. Но как только я изменяю код на:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<h1 ng-mousemove="count = count + 1;">Mouse Over Me!</h1>

<h2>{{ count }}</h2>

</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.count = 0;
});
</script> 

</body>
</html>

, тогда код работает просто отлично. Почему AngularJS не позволяет ++count;, но позволяет count = count + 1;?

1 Ответ

0 голосов
/ 10 ноября 2019

Директива ng-mouseover оценивает выражения AngularJS, которые похожи на JavaScript, но имеют различия.

Из документов:

Выражения AngularJS против выражений JavaScript

Выражения AngularJS похожи на выражения JavaScript со следующими отличиями:

  • Контекст: Выражения JavaScript оцениваются по отношению к глобальному окну. В AngularJS выражения оцениваются по объекту области.

  • Прощение: В JavaScript при попытке оценить неопределенные свойства генерируется ReferenceError или TypeError. В AngularJS оценка выражений прощает undefined и null.

  • Фильтры: Вы можете использовать фильтры в выражениях для форматирования данных перед их отображением.

  • Нет операторов потока управления: В выражении AngularJS нельзя использовать следующее: условные выражения, циклы или исключения.

  • Нет объявлений функций: Вы не можете объявлять функции в выражении AngularJS, даже внутри директивы ng-init.

  • Нет создания RegExp с буквенной нотацией: Вы не можете создавать регулярные выражения в выражении AngularJS. Исключением из этого правила является ng-pattern, которое принимает действительные значения RegExp.

  • Создание объекта с новым оператором: Вы не можете использовать оператор new в выражении AngularJS.

  • Без битовых, запятых и пустых операторов: Вы не можете использовать Битовые , , или void операторы в AngularJSexpression.

Для получения дополнительной информации см.

...