2015-09-24 5 views
3

У меня есть модальный, который появляется при нажатии кнопки. Содержимое модального списка - это список элементов. Этот список хранится в контроллере и заполняется некоторыми данными из ответа на запрос GET.ngRepeat на мгновение показывает дублированный список

Всякий раз, когда я открываю модальное многократно, что неявно вызывает обновление в списке, на мгновение я вижу несколько копий списка - примерно по одной копии для каждого клика. Отображаемый список затем разрешает себя тем, что на самом деле хранится в списке.

Это может быть проблема с контроллером или html, или это какой-то побочный эффект от ngRepeat?

Ниже приведены фрагменты из HTML файла:

<li ng-repeat="itemin vm.items">{{item.name}}</li> 

<a href="#" onclick="togglePanel('Panel')" ng-click= "vm.getItems()">View Items</a> 

И от контроллера:

getItems(): angular.IPromise<core.IItem> { 
     var self: Controller = this; 
     return this.itemDataService.getItems() 
     .then(function(response: any): angular.IPromise<core.IItem> { 
      self.items = response.data; 
      return response; 
     }, 
     function(response: any): angular.IPromise<core.IItem> { 
      self.items = []; 
      return response; 
     }); 
    } 

Пожалуйста, спросите, если вы хотите увидеть больше кода.

Edit: Дополнительный код ... OnClick называют:

function toggleSavedSearchPanel(id) 
{ 
    var e = document.getElementById(id); 

    if (e.style.display == 'block' || e.style.display=='') 
    { 
     e.style.display = 'none'; 
    } 
    else 
    { 
     e.style.display = 'block'; 
     e.focus(); 
    } 
} 
+1

Проблема была с моим кодом CSS; произошел переход: 0.2s в css для списка. Удаление его решило все мои проблемы. –

ответ

0

немного кода было бы полезно. Например, у вас есть атрибут onclick для тега a, а также событие ng-click. Его трудно сказать, что происходит, не зная, что делает функция onclick.

Кроме того, в представлении вы прикрепляете элементы к свойству в области с именем vm, но в своем контроллере вы прикрепляете его непосредственно к этому/себе. Есть ли еще код, который перемещает его в объект vm?

Похоже, вы имеете дело с вопросом времени вокруг вызовов API, но его трудно узнать, не видя больше кода.

+0

Что касается вашего второго абзаца, я думаю, он использует синтаксис * controller как *. – muenchdo

+0

Я бы предположил, что это тоже так, но мы не знаем точно, не видя этого кода. – abiwer

+0

Я добавил код для события onClick. Ng-click вызывает функцию getItems(), которую я изначально опубликовал. «vm» - это ссылка на контроллер, который я использую - надеюсь, вы можете мне доверять. Я думаю, что проблема может быть сведена к сроку - если это так, как я могу обойти это? –

Смежные вопросы