【问题标题】:Angularjs to use jquery ui accordion - timing issueAngularjs 使用 jquery ui 手风琴 - 时间问题
【发布时间】:2014-04-01 05:41:17
【问题描述】:

我想在 AngularJS 中使用 Jquery UI 的手风琴。 所以我写了一个指令:

angular.module('accordion', [])
    .directive('accordion', function () {
        return {
            restrict: 'AE',
            replace: true,
            link: function (scope, element, attrs) {
                $(document).ready(function () {
                    setTimeout(function () {
                        element.accordion({ icons: false });
                    }, 1000);
                });
            }
        };
    });

我使用 setTimeout 是因为指令是在页面之前加载的(或者是吗?我不确定),所以我需要超时才能加载它。 当然,超时并不总是足够的,有时它太快了,所以我可以在指令生效之前看到 HTML,然后它变成手风琴,我不希望用户看到它。

想法?

【问题讨论】:

    标签: javascript jquery angularjs jquery-ui accordion


    【解决方案1】:

    解决了... 在指令中添加了一个监视 - 监视一个在从服务器接收数据时发生变化的变量 - 并且手风琴被激活!

    angular.module('accordion', [])
        .directive('accordion', function () {
            return {
                restrict: 'AE',
                replace: true,
                link: function (scope, element, attrs) {
                    scope.$watch('serverData', function (newValue, oldValue) {
                        if (oldValue != newValue) {
                            element.accordion();
                        }
                    });
                }
            };
        });
    

    【讨论】:

      【解决方案2】:

      你不需要 ($document).ready 因为指令是在角度引导过程之后链接的,这本身发生在文档准备好之后。

      现在我不确定你在使用手风琴是什么,如果它的图像很重,或者使用其他模板,那么这个指令很可能会在所有图像和 ng-includes 加载之前被链接。

      你能用一个例子来创建 plunker 吗?

      【讨论】:

      • 删除 $document.ready 并没有帮助......而且我从服务器加载数据 - 所以我认为在 plunker 上模拟这个非常困难......
      • 使用本地数据时不会出现这个问题吗?
      • 不.. 我可以使用纯文本,没有 $document(ready) 也没有超时 - 该指令将只包含“element.accordion();”行 - 它有效。
      • 你能解释一下你的意思吗?它太快了,所以我可以在指令生效之前看到 HTML,然后它变成手风琴,我不希望用户看到它。 "
      • 在 Jquery UI 手风琴中 - 我多次使用

        - 使用 ng-repeat。因此,当我使用 setTimeOut(1000) 时,我可以看到原始的 h3 样式,然后是带有来自 ng-repeat 的数据的 div,我可以看到片刻 - 然后指令超时通过,它变成了手风琴应该是。

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多