0

私はそのようなコントローラを持っています:

$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 の値を見ると、2 回存在するようです。1 つは ngSwipeLeft 呼び出しで、もう 1 つは 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'
});

これにより、コントローラーが 2 回インスタンス化され、明らかに問題が発生していました (ただし、現時点では、これだけが表面化しているように見えました)。

ルーティングまたはビューからコントローラー定義を削除すると、うまくいきました。

于 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 に答える