javascript - 未捕获的类型错误 : Cannot read property 'sheet' of null

标签 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。帮忙?

最佳答案

这里的问题是在您的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/

相关文章:

javascript - 如何使用 select2 初始化默认值并触发 ajax 请求(select2 :select)?

javascript - ChartJS AJAX 加载标签和数据

javascript - 模糊 Angular JS 上的异步验证指令

javascript - 从 Facebook 帖子获取点赞

javascript - 提取通过js中的数组传递的选择框文本

angularjs - angular ui-bootstrap popover 模板内容和关闭按钮

javascript - OpenLayers:OSM 未显示在 div 上

javascript - Angular JS 中 html 表格条目的分页

javascript - Ionic,从侧面菜单隐藏和显示元素

javascript - 谷歌浏览器扩展程序: setAttribute doesn't work