我有一些Ang代码,我似乎无法调试。加载页面在导航下拉栏中完美呈现我的所有组。当我单击其中一个组时,将调用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}}
答案 0 :(得分:0)
您正在使用返回的数据覆盖该函数:
$scope.messagesIndex = function($groupID){
...
$scope.messagesIndex = data;
...
$scope.messagesIndex = data.response;
$scope.messagesIndex
不能等同于您收到的功能和数据。