首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当由于数据变化而更新布局时,如何调用函数

当由于数据变化而更新布局时,如何调用函数
EN

Stack Overflow用户
提问于 2013-10-04 13:53:44
回答 5查看 4K关注 0票数 2

我有一个ng重复指令,它显示一个链接列表。它工作得很好,但是我的代码也有一个javascript函数,它根据列表的尺寸来放置列表。当然,在对DOM进行数据绑定和修改之前,不知道列表的维数。如果在数据更改后立即调用该函数,那么布局计算就会跳过枪,并将列表放置为空。我想启动函数,一旦角度完成修改DOM。我怎么能这么做?

编辑:

刚尝试了ngcloak作为一种可能的解决方案,不幸的是,它不起作用。阅读ngcloak的文档,我的问题不是列表闪烁,而是放在那里,好像它是空的,然后留在那里。一旦绑定完成,我需要一种调用我的函数的方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-04 20:28:32

当发生数据更改时,使用$timeout服务在延迟后调用修饰符。如果由于无法正确猜测时间而超时不够可靠,则可以编写一个递归函数,在100 is这样的短暂超时之后调用它自己,以检查角是否处于摘要或应用阶段。如果它不在摘要或应用阶段,那么您可以调用放置修饰符。

票数 0
EN

Stack Overflow用户

发布于 2013-10-04 14:50:54

我以前做过这样的工作,创建了一个自定义指令,以便在ng-重复之外使用。所以,例如

代码语言:javascript
运行
复制
<div ng-repeat="foo in bar" myDirective>

这使您可以在myDirective中访问指令的作用域并检查ng-重复呈现中的最后一项。例如,这就是我对ng-重复呈现的某些元素使用同位素jquery库时所拥有的:

代码语言:javascript
运行
复制
angular
    .module('myModule')
    .directive('myDirective', function ($timeout) {
        return {
            restrict: 'A',
            link: function postLink(scope, element, attrs) {
                if (attrs.ngRepeat && scope.$last) {
                    $timeout(function() {
                        $('#myContainer').isotope({
                           layoutMode: 'fitRows'
                        });
                    });
                }
            }
        };
    });

它与html一起使用,例如:

代码语言:javascript
运行
复制
<div id="myContainer" ng-repeat="foo in bar" myDirective>
    <div class="element">{{foo}}</div>
</div>

应该给你你想要的东西。

只需将$('#myContainer').isotope({})替换为您想要执行的内容时,ng-重复已经完成呈现您的重复。

票数 1
EN

Stack Overflow用户

发布于 2014-10-28 11:54:15

似乎您正在使用砌体-like库来定位元素,如果是的话,请使用角砌体指令。也有叉子消除了jQuery。

但是无论如何,看看它,会很有用的。

  • 对于文本数据,一个小的延迟可以工作,例如: timeout =$timeout(函数布局(){//布局元素},30);
  • 对于图像,您可以在完全加载图像之前获得尺寸,这里可以找到一个很好的方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19183049

复制
相关文章

相似问题

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