0

我有一些似乎无法调试的 Angular 代码。加载页面在导航下拉栏中完美呈现我的所有组。当我点击其中一个组时,messagesIndex 函数被调用,该组中的所有消息都将正常显示,此时一切正常。问题是当我点击另一个组,甚至是同一个组时,messagesIndex 函数不会再次加载。

我花了很多时间试图调试这个问题无济于事,但我已经缩小了问题发生的确切位置,似乎没有任何我可以找到的问题。

我只用 $scope.groupID 替换了 messagesIndex 函数的内容,并输出了结果和一个随机数。groupID 与随机数一起显示,每次我点击不同的组时,都会出现不同的 ID 和随机数,这意味着 JADE/HTML 运行正常,函数头是金色的。

然后,我使用原始的 messagesIndex 函数,并在 HTTP 请求之前和之后添加了 $scope.random1 和 scope.random2 以及分配给它们的随机数到函数的开头和结尾。第一次调用该函数时,生成并输出了两个随机数,虽然http请求是异步的,但所有值都正常返回,提示该函数调用完全,除非成功后HTTP请求拖拽有问题回复?然后当我通过单击另一个组再次调用它时。两个随机数都没有改变,表明该函数要么根本没有调用,要么在执行其中的第一行代码之前停止。

坦率地说,我很难过。该代码看起来与许多有效的 HTTP 请求基本相同,但由于某种原因我不能调用它两次。

下面是 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

0

您正在使用返回的数据覆盖函数:

$scope.messagesIndex = function($groupID){
...
$scope.messagesIndex = data;
...
$scope.messagesIndex = data.response;

$scope.messagesIndex不能等于函数和您收到的数据。

于 2013-08-02T11:16:04.157 回答