【问题标题】:Cannot read property 'result' of undefined infinite scroll无法读取未定义无限滚动的属性“结果”
【发布时间】:2017-03-22 21:12:58
【问题描述】:

让我的无限滚动出现一些奇怪的行为。我不断收到 TypeError: Cannot read property 'result' of undefined.

我的数据已被检索,但不断获取更多数据,导致我的表中出现 html 空白行,我不确定发生了什么。

在下面的代码中,我尝试了 result.data |数据,然后是 vm.items[i]

谢谢

代码如下:

    vm.items = [];
    vm.busy = false;
    vm.loadMore = function () {
        if (vm.busy) return;
        vm.busy = true;
        productDataService.getProductList()
            .then(function (result) {                   
                console.log(result.data);
                vm.items = result.data;
                for (var i = 0; i < vm.items.length; i++) {
                    vm.items.push(vm.items[i].result);                        
                    vm.busy = true;
                }
            });

【问题讨论】:

    标签: javascript angularjs scroll infinite-scroll


    【解决方案1】:
    vm.items = [];
        vm.busy = false;
        vm.loadMore = function () {
            if (vm.busy) return;
            vm.busy = true;
            productDataService.getProductList()
                .then(function (result) {                   
                    console.log(result.data);
                    for (var i = 0; i < result.data.length; i++) {
                        vm.items.push(result.data[i].result);                        
    
                    }
                    vm.busy = false;
                });
    

    【讨论】:

    • 这复制了结果。原始结果是 77,这个逻辑现在是 154,并且在 html 中仍然有额外的表格行
    • 我已经编辑了答案,逻辑是新项目应该附加到 vm.items 数组中。而且我不知道服务“getProductList”如何知道对结果进行分页。
    【解决方案2】:

    删除 vm.items = result.data; 行并改为迭代 result.data

    【讨论】:

      【解决方案3】:

      我会怀疑这个块:

      for (var i = 0; i < vm.items.length; i++) {
             vm.items.push(vm.items[i].result);                        
             vm.busy = true;
      }
      

      每次 for 循环迭代时,您都在向 vm.items 添加一个元素,使 vm.items.length = vm.items.length + 1,您将其用作 for 循环中的条件:i &lt; vm.items.length。这个循环正在追逐自己的尾巴,即你有一个无限循环。

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 1970-01-01
        • 2020-12-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        相关资源
        最近更新 更多