0

デバッグできないように見えるAngularコードが少しあります。読み込み中のページでは、ナビゲーション ドロップダウン バーにすべてのグループが完全に表示されます。グループの 1 つをクリックすると、messagesIndex 関数が呼び出され、そのグループからのすべてのメッセージが正常に表示され、この時点ですべて正常に動作しています。問題は、別のグループ、または同じグループをクリックしようとすると、messagesIndex 関数が 2 回目に読み込まれないことです。

この問題を無駄にデバッグしようと多くの時間を費やしましたが、問題が発生している場所を正確に絞り込みましたが、見つけることができる問題はないようです。

messagesIndex 関数の内容を $scope.groupID だけに置き換え、結果を乱数とともに出力しました。groupID が乱数とともに表示され、別のグループをクリックするたびに別の ID と乱数が表示されました。これは、JADE/HTML が適切に機能し、機能ヘッダーがゴールデンであることを意味します。

次に、元の messagesIndex 関数を使用して、HTTP 要求の前後の関数の最初と最後に、乱数を割り当てた $scope.random1 と scope.random2 を追加しました。最初に関数を呼び出したとき、両方の乱数が生成されて出力されましたが、http 要求は非同期ですが、すべての値が正常に返されました。これは、成功後に HTTP 要求が引きずられる問題がない限り、関数が完全に呼び出されたことを示唆しています。応答?次に、別のグループをクリックして再度呼び出しに行ったとき。どちらの乱数も変化せず、関数がまったく呼び出されなかったか、関数内のコードの最初の行を実行する前に停止したことを示しています。

率直に言って、私は困惑しています。コードは基本的に多くの動作中の HTTP リクエストと同じように見えますが、何らかの理由で 2 回呼び出すことができません。

以下は AngularJS コードです。

angular.module('angular-client').controller('GroupMeCtrl',
['$scope', '$http', '$templateCache', 'Auth', function($scope, $http, $templateCache) {

  $scope.groupsIndex = function(){
      $http({
        method: 'GET', 
        url: 'https://api.groupme.com/v3/groups?token=' + token,
        cache: $templateCache
      }).
          success(function(data, status) {
              $scope.groupsIndex = data.response;
              $scope.stat = status;       
          }).
          error(function(data, status, headers, config) {
              $scope.groupsIndex = data.response;
              $scope.stat = status || "Request failed"; 
          });
  };

  $scope.messagesIndex = function($groupID){
      $http({
        method: 'GET', 
        url: 'https://api.groupme.com/v3/groups/' + $groupID + '/messages?token=' + token,
        cache: $templateCache
      }).
          success(function(data, status) {
              $scope.messagesIndex = data;
              $scope.stat = status;       
          }).
          error(function(data, status) {
              $scope.messagesIndex = data.response;
              $scope.stat = status || "Request failed";
          });
  };

}]);

そして、ここに私のJADEがあります:

li.dropdown
    a.dropdown-toggle(href='#', data-toggle='dropdown')
        | Groups
        b.caret
    ul.dropdown-menu
        li(ng-repeat="group in groupsIndex")
            a(ng-click="messagesIndex(group.id)") {{group.name}}



.message-box(ng-repeat="message in messagesIndex.response.messages")
    .avatar-container
        img(src="{{message.avatar_url}}").avatar
    .text
        .user-name
            {{message.name}}
        span
            {{message.text}}
4

1 に答える 1