angularjs, сфера не обновляется по функциям - с ngTouch
У меня есть контроллер с такими:
$scope.myVar = 0;
$scope.back = function () {
$scope.myVar--;
};
$scope.next = function () {
$scope.myVar++;
};
Если next() (с ngClick) вызывается 3 раза, мы получаем:
// 1
//2
// 3
но если back() (с ngSwipeLeft) вызывается, он возвращает
//-1
когда я явно ожидаю
//2
Что мне здесь не хватает?
обновление: включая детали ngTouch - кажется, это проблема.. ngTouch включен.
Когда я наблюдаю значение myVar - как будто оно существует дважды - одно с вызовом ngSwipeLeft, а другое с вызовом ngClick
3 ответа
Итак, я понял свою проблему - я не предоставил достаточно подробностей в вопросе - но если кто-то столкнется с чем-то подобным в будущем, вот что происходит:
Я объявил свой контроллер с ng-controller="myCtrl"
в шаблонах, но также с использованием маршрутизации, где я объявил свой контроллер следующим образом:
$routeProvider.when('/', {
templateUrl: 'myUrl.html',
controller: 'myCtrl'
});
Это приводило к созданию экземпляра контроллера дважды и, очевидно, вызывало проблемы (хотя пока казалось, что это единственный выход на поверхность).
Удаление определения контроллера из маршрутизации или представления сделало свое дело.
Ваш фрагмент выглядит хорошо для меня. Вам нужно предоставить больше кода, ошибка может быть где-то еще. Посмотрите на код ниже.
<!doctype html>
<html ng-app="myapp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular-touch.min.js"></script>
<script>
var app = angular.module('myapp',['ngTouch']);
var controller = app.controller('mycontroller', ['$scope',function($scope){
$scope.myVar = 0;
$scope.back = function () {
$scope.myVar--;
};
$scope.next = function () {
$scope.myVar++;
};
}]);
</script>
</head>
<body ng-controller="mycontroller">
<div>
<h1>MyVar: {{myVar}}!</h1>
<input type="button" value="back" ng-click="back()"/>
<input type="button" value="next" ng-click="next()"/>
</div>
</body>
</html>
Вам нужно увидеть ваш HTML, не уверен в вашей проблеме, вот пример рабочего кода,
<div ng-app="myapp">
<div ng-controller="IncDecController">
<span>current value is {{myVar}}</span>
<img src="https://angularjs.org/img/AngularJS-large.png" ng-swipe-left="back()"></img>
<button ng-click="next()">next</button>
</div>
</div>
сценарий:
angular.module('myapp', ['ngTouch'])
.controller('IncDecController', ['$scope', function ($scope) {
$scope.myVar = 0;
$scope.back = function () {
$scope.myVar--;
};
$scope.next = function () {
$scope.myVar++;
};
}])