首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AngularJS :为什么没有在视图中显示数据,我可以使用$scope.apply吗?

AngularJS :为什么没有在视图中显示数据,我可以使用$scope.apply吗?
EN

Stack Overflow用户
提问于 2015-06-10 03:15:46
回答 2查看 84关注 0票数 0

我正在使用ng-重复 .Actually从服务获取数据并在视图上显示,当用户滚动到底部意味着当用户到达底部时,我将执行到底部的something.When,我正在更改数组的争用,.I在ng-重复数组(显示数组)中得到正确的争用,但它不反映为什么?我可以使用$scope.apply()还是$scope.digest()

这是我的密码

http://plnkr.co/edit/XgOxJnPXZk4DneJonlKV?p=preview

在这里,我要更改显示数组的争用,它不反映视图。

代码语言:javascript
运行
复制
if (container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight) {
            if(scope.var<scope.arrays.length)
            scope.display=[];
            var nextvar =++counter;
            var increment=counter+1
            console.log("nextvar:"+nextvar+"increment:"+increment)
            scope.display=scope.arrays[nextvar].concat(scope.arrays[increment]);
           console.log(scope.display)
          }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 04:21:27

正如@Claies所提到的,您应该使用apply()。尽管摘要()可能在well.apply()内部调用摘要()时起作用。他还提到,每次滚动时,似乎正在存储页码的变量都会被重置为0。您应该将其存储在该处理程序之外的范围变量中。我试着用最小的零钱来修正

http://plnkr.co/edit/izV3Dd7raviCt4j7C8wu?p=preview

代码语言:javascript
运行
复制
 .directive("scrollable", function() {
    return function(scope, element, attrs) {
      var container = angular.element(element);
      container.bind("scroll", function(evt) {
        console.log('scroll called'+container[0].scrollTop);
        var counter = scope.page;
        if (container[0].scrollTop <= 0) {
          if (scope.var > 0)
            scope.display = scope.arrays[--scope.var].concat(scope.arrays[scope.var+1]);

        }

        if (container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight) {

          if (scope.var < scope.arrays.length)
            scope.display = [];
          var nextvar = ++counter;
          var increment = counter + 1
          console.log("nextvar:" + nextvar + "increment:" + increment)
          scope.display = scope.arrays[nextvar].concat(scope.arrays[increment]);
          console.log(scope.display)
          scope.page = counter;
        }
        scope.$apply();
      });
    };
  })

一般来说,我会以不同的方式来实现这一点。例如,在列表的底部有一个旋转轮,当显示时,您将获得其余的数据。很难给你一个完全工作的柱塞。可能您应该在柱塞中有多个JSON文件,每个文件包含一个页面的数据,这样我们就可以将数据添加到显示列表的底部。

票数 1
EN

Stack Overflow用户

发布于 2015-06-10 04:03:50

修改display数组之后,只需调用scope.$apply(),以便它运行$digest循环并更新视图。另外,您需要在控制器或指令中初始化scope.var,并有条件地修改它。

如果这是你想要的,我不会。我修改了柱塞看一看。http://plnkr.co/edit/J89VDMQGIXvFnK86JUxx?p=preview

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30746490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档