デバッグできないように見える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}}