首页 新闻 搜索 专区 学院

angularjs ajax动态加载指令,下一次数据重复渲染之前的指令

0
悬赏园豆:100 [待解决问题]
  1.  页面滑动到底部时, ajax向后台请求分页数据,
    2. 得到分页数据后$compilte编译指令, 赋值$scope.myData = datas;
    3. 指令模版ng-repeat相应数据。
    4. 第一次插入dom正常, 可下一次插入DOM中的指令模版  会把之前插入的数据改成这次的一样,
    5 何解, 怎样避免这样???   

 

 

底部请求: 

$http.post(url, data, config).success(function(datas) {

      var html = '<div my-list></div>';

      var node = $compile(html)($scope.$new());

            $(".list").append(node[0]);

            $scope.myData= datas; 

    });

my-list指令:

dirModule.directive("facilityList", function($state, $http, $compile, lazy) {

    return {

        restrict: "AE",

        template:'<li ng-repeat="my in myData" ng-controller="LiCtrl"><span>{{my.dd}}</span</li>',

    };

});

controller控制器:

ctrlModule.controller("LiCtrl", function($scope, $http) {});

 

csdn里的提问  http://bbs.csdn.net/topics/391875896http://bbs.csdn.net/topics/391875896

awayInner的主页 awayInner | 初学一级 | 园豆:102
提问于:2015-12-13 13:37
< >
分享
所有回答(1)
0

应该用追加,而不是覆盖数据吧?

幻天芒 | 园豆:36652 (高人七级) | 2015-12-13 16:17

肯定是追加数据

支持(0) 反对(0) awayInner | 园豆:102 (初学一级) | 2015-12-13 17:24

@awayInner: 你的问题在于你在指令中没有使用scope: true,导致你的自定义指令共享了controller的作用域,所以当你第二次赋值的时候,相当于把更改了controller中myData,而angular的双向绑定机制就会起作用,将你第一次的元素给更新一下。

改法有很多,你可以在你的facilityList这个指令中,return {restrict: 'AE', scope: true,template:....}

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-12-13 17:48

@幻天芒: scope: true设置scope的都没法动态编译了

支持(0) 反对(0) awayInner | 园豆:102 (初学一级) | 2015-12-13 17:50

@awayInner: 额,看到了,是因为$scope.myData= datas; 这样你就改变了值。导致第一次的数据也被更新了。你可以在指令魔板中,使用单向绑定,如:  template:'<li ng-repeat="my in ::myData" ng-controller="LiCtrl"><span>{{my.dd}}</span</li>',

 

BTW:我觉得你的实现思路可能有问题、

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-12-13 17:54

@幻天芒: 有没有更好的相应的DEMO?, 我通过建立一人数组push进去,实现了。 但数据越多就渲染越多

性能不太好

支持(0) 反对(0) awayInner | 园豆:102 (初学一级) | 2015-12-13 17:55

@awayInner: 单项绑定的性能就会好些,你的每个li都有一个controller是没必要的呢。。

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-12-13 17:57

@幻天芒: 有没有向下滚动分页的demo??

支持(0) 反对(0) awayInner | 园豆:102 (初学一级) | 2015-12-13 17:58

@awayInner: 没有哈,懒得写。dom元素多了,肯定会卡。滚动分页太深的时候,需要将不可见部分移除dom树。要不然,不管怎样都会卡顿的。

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-12-13 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册