检测指令中的 ng-repeat 元素长度变化

Posted

技术标签:

【中文标题】检测指令中的 ng-repeat 元素长度变化【英文标题】:Detect ng-repeat elements length change in directive 【发布时间】:2017-10-16 00:09:37 【问题描述】:

我有 angular-sly-carousel 指令和一些数据。当用户向下滚动时,我的数据正在添加,所以滚动后我需要重新加载狡猾的轮播选项。

如何检测 ng-repeat 元素的长度何时发生变化?

我的源代码,当我应该检测 ng-repeat 元素长度变化时(不起作用)。

<li sly-horizontal-repeat-simple ng-repeat="game in value | limitTo: gamesLimit track by game.id"> 
... 
</li>


VBET5.directive('slyHorizontalRepeatSimple', function($timeout,$window) 
return 
    restrict: 'A',
    link: function(scope, el, attrs) 
        if (scope.$last === true) 
            $timeout(function() 
                var cont = $(el[0]);
                var frame = $(el[0]).parent();

                // Call Sly on frame
                $(window).on("resize", function() 
                    frame.sly("reload");
                );

                // Watch , if items in ng-repeat change length then reload
                scope.$watch('value', function() 
                    frame.sly("reload"); // I need reload sly when el chang
                );


            );
        
    

);

【问题讨论】:

【参考方案1】:

您必须将范围变量而不是 element.length。如果 Scope.variable 得到修改,将触发监视触发器。

$scope.$watch(
            function () 
                return $scope.value;
            ,
            function (newValue, oldValue) 
                if (!angular.equals(oldValue, newValue)) 
                  $scope.text = 'Your value now =' + $scope.value;
                    
            ,
            true);

【讨论】:

嗯,在我的情况下如何使用它? 更新代码和注释。 完成。你能检查一下吗? 谢谢,你拯救了我的一天:)

以上是关于检测指令中的 ng-repeat 元素长度变化的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 ng-repeat 中的输入字段值变化

angularJS中的ng-repeat指令!

如何在自定义指令中处理 ng-repeat 子元素?

如何从其他`ng-repeat`元素获取`data`到当前元素指令

移动由 ng-repeat 创建的 angularJS 元素

AngularJs ng-repeat 中的 iframe 加载事件