未捕获的TypeError:无法读取属性' sheet'为null

时间:2014-06-27 11:05:29

标签: javascript angularjs

我正在学习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。帮助

1 个答案:

答案 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;
});