使用ng重复填充tx3标签云

时间:2015-01-15 08:18:08

标签: javascript jquery angularjs angularjs-ng-repeat tag-cloud

我使用tx3 Tag Cloud来显示某些数据。 实际上它使用起来很简单。

<ul id="tagcloud">
<li data-weight="50"><a href="#">HTML5</a></li>
<li data-weight="24"><a href="#">CSS3</a></li>
<li data-weight="28"><a href="#">Javascript</a></li>
<li data-weight="32"><a href="#">jQuery</a></li>
...
</ul>

我想用ngRepeat从角度范围列表中填充这些元素。

<li data-weight="{{element.weight}}" ng-repeat="element in list">{{element.title}}</li>

在DevTools / Firebug中,我可以看到所有li元素都已创建但数据权重被忽略。如果没有ngRepeat,我可以看到带有大小值的style属性将被添加到li元素中。使用ngRepeat时情况并非如此。

我认为问题在于在创建标签云时未加载/初始化角度范围。有没有办法强制在页面加载之前完全加载作用域?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我通过向ng-repeat添加指令解决了我的问题。在这个指令中,我调用超时函数并在此之后初始化标签云。

function ngRepeatDoneNotification($timeout) {

        return {
            link: function(scope, element, attrs) {
                if (scope.$last){ // ISSUE IS HERE
                        $timeout(function() {
                        $("#tagcloud").tx3TagCloud({
                            multiplier: 5 // default multiplier is "1"
                        });
                    });
                }
            }
        }
    }