1

我想使用 jquery 中的columnize插件在我的 AngularJS 应用程序中设置列。我超级天真的方法是:

.directive('columnize', function() {
    return {
        restrict: 'A',
        link: function(scope, iElement, iAttrs) {
            $(iElement).columnize({columns: 2});
        }
    };
}); 

使用此 HTML 代码:

<ol class="questions" columnize>
    <li ng-repeat="question in questions" class="question">
        <span>{{question.text}}</span>
        <ul class="choices" sortable="question.choices">
            <li ng-repeat="choice in question.choices">
                {{choice}}
            </li>
        </ul>
    </li>
</ol>  

但问题是在元素内部我使用了 ng-repeat。columnize destroy 的 dom 然后 ng-repeat 抛出一个它不能 insertBefore 空元素的异常。我觉得我的方法是错误的。有什么建议么?

4

1 回答 1

0
.directive('columnize', function($timeout) {
   return {
     restrict: 'A',
     link: function(scope, iElement, iAttrs) {
              $timeout( function(){ iElement.columnize({columns: 2}), 0});
           }

尽管这似乎可行,但我认为这不是正确的方法。我记得读过另一篇文章,其中 $timeout 用于在初始渲染后运行一个函数,这似乎在这里工作。

希望你能得到更好的答案。

小提琴

于 2012-11-14T20:31:48.580 回答