我正在学习 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
。帮忙?
最佳答案
这里的问题是在您的http请求得到响应期间,脚本中的ng-repeat session 已经被调用。这意味着 session 的值为空,我认为您尝试访问 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;
});
并在 Controller 中尝试访问此
httpService().then(function(res){
$scope.sessions = res;
});
关于javascript - 未捕获的类型错误 : Cannot read property 'sheet' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450286/