【问题标题】:Detect ng-repeat elements length change in directive检测指令中的 ng-repeat 元素长度变化
【发布时间】: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
                });


            });
        }
    }
}
});

【问题讨论】:

    标签: javascript jquery angularjs angularjs-ng-repeat


    【解决方案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);
    

    【讨论】:

    • 嗯,在我的情况下如何使用它?
    • 更新代码和注释。
    • 完成。你能检查一下吗?
    • 谢谢,你拯救了我的一天:)
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多