angularjs,范围不跨功能更新-使用ngTouch

angularjs, Scope not updating across functions - with ngTouch

本文关键字:更新 使用 ngTouch 功能 范围 angularjs      更新时间:2023-09-26

我有一个这样的控制器:

$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调用,另一次是ingClick调用

你的代码片段对我来说很好。你需要提供更多的代码,错误可能在其他地方。查看下面的代码。

<!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>

好的,所以我已经解决了我的问题-我没有在问题中提供足够的细节-但如果有人在未来遇到类似的事情,下面是发生的事情:

我在模板中用ng-controller="myCtrl"声明了我的控制器,但也使用了路由,在路由中我声明了像这样的控制器

$routeProvider.when('/', {
templateUrl: 'myUrl.html',
controller: 'myCtrl'
});

这两次实例化了控制器,显然造成了问题(尽管这似乎是目前唯一出现的问题)。

从路由或视图中删除控制器定义就成功了。

需要查看你的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++;
    };
}])