我正在学习AngularJS,并在更改此功能后遇到问题:
gList : function (){
return List
},
有了这个:
gList : function() {
$http({method:'GET',url:'/sessions'}).
success(function(data){
return data;
}).
error(function(data){
$log.info(data);
})},
现在我收到了这个错误:
Uncaught TypeError: Cannot read property 'sheet' of null
(anonymous function) modernizr-2.6.2.min.js:4
y modernizr-2.6.2.min.js:4
s.fontface modernizr-2.6.2.min.js:4
(anonymous function) modernizr-2.6.2.min.js:4
(anonymous function) modernizr-2.6.2.min.js:4
此处调用该函数:
$scope.sessions = Sessions.gList();
然后
ng-repeat="session in sessions"
虽然我在代码中甚至没有使用sheet
。帮助
答案 0 :(得分:1)
这里的问题是在您的http请求得到响应的时间,脚本中的ng-repeat会话已经被调用。这意味着会话的值为null,我认为您尝试访问未定义的HTML中的{{session.sheet}},因此浏览器会告诉您。这种问题的解决方案是使用$ q.defer.resolve()和$ q.defer.reject()来获得http响应和错误。比通过$ q.promise。下面给出一个例子:
.service('httpService' , ['$http','$q', function($http, $q) ]{
$http(sendConfig).then(function(response) {
deferred.resolve(response);
}, function(response) {
deferred.error(response);
}, function(message) {
deferred.notify(message);
});
return deferred.promise;
});
在控制器中尝试访问此
httpService().then(function(res){
$scope.sessions = res;
});