2016-01-15 179 views
1

我在嘗試使用Drop.jsAngular.js作出下拉菜單。當我嘗試在由Drop.js定義的content元素內使用ng-repeat指令時,ng-repeat元素因某種原因而被註釋掉(請參見下面的截圖)。任何人都知道爲什麼會發生這種情況,解決這個問題的好方法是什麼?ng-repeat被Drop.js註釋掉

截圖我的DOM的:

enter image description here

我也是在控制檯得到一個錯誤:

TypeError: Cannot read property 'insertBefore' of null

這裏是我的HTML代碼:

<div id="dropdownmenu"> 
    Dropdown Menu <i class="fa fa-caret-down"></i> 
</div> 

<div id="dropdownmenu-content"> 
    <div>Line 1 works fine.</div> 
    <div>Line 2 works fine too.</div> 
    <div>But lines in ng-repeat are not showing up!</div> 
    <div ng-repeat="l in ['line 1', 'line 2', 'line 3']"> 
      {{l}} 
    </div> 
</div> 

我的JavaScript代碼:

var drop = new Drop({ 
     target: document.querySelector('#dropdownmenu'), 
     content: document.querySelector('#dropdownmenu-content'), 
     position: 'bottom left', 
     openOn: 'click' 
    }); 

Here's a Plunker demo of my problem.

回答

1

你最好綁定Drop模塊后角指令ng-repeat渲染了。

angular.module('select', []) 
    .controller('SelectController', ['$scope','$timeout', function($scope,$timeout) { 

     $timeout(function(){ 
     var drop = new Drop({ 
      target: document.querySelector('#dropdownmenu'), 
      content: document.querySelector('#dropdownmenu-content'), 
      position: 'bottom left', 
      openOn: 'click' 
     }); 
     },0); 

}]); 
+0

你能分享一個工作演示嗎?我的重複行仍然沒有顯示出來...... – CherryQu

+0

https://plnkr.co/edit/wUpwFqakcm1hvb6yjDSF?p=preview – hirra

+0

謝謝!這適用於我!我仍然不明白爲什麼$超時解決了我的問題。在我看來,時間延遲設置爲零,爲什麼這會使綁定Drop比ng-repeat渲染晚? – CherryQu