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 null 要素を挿入できないという例外をスローします。私のアプローチが間違っているように感じます。助言がありますか?

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 に答える