0

我有一个这样的控制器:

$scope.myVar = 0;

  $scope.back = function () {
    $scope.myVar--;
  };

  $scope.next = function () {
    $scope.myVar++;
  };

如果 next()(使用 ngClick)被调用 3 次,我们得到:

//1

//2

//3

但是如果调用 back() (with ngSwipeLeft) 它会返回

//-1

当我明显期待

//2

我在这里想念什么?

更新:包括 ngTouch 详细信息 - 这似乎是问题.. ngTouch 包括在内。

当我观察 myVar 值时 - 它就像它存在两次一样 - 一次使用 ngSwipeLeft 调用,另一次使用 ngClick 调用

4

3 回答 3

2

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

<!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>
于 2014-10-25T04:22:39.653 回答
1

好的,所以我已经找到了我的问题——我没有在问题中提供足够的细节——但如果有人在未来遇到类似的事情,这就是发生了什么:

ng-controller="myCtrl"在模板中声明了我的控制器,但也使用了路由,我在其中声明了我的控制器,例如:

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

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

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

于 2014-10-25T19:52:41.783 回答
0

需要查看您的 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++;
    };
}])
于 2014-10-25T04:32:26.477 回答