2015-09-24 68 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; 
     }); 
    } 

請詢問你是否需要看到更多的代碼。

編輯:額外的代碼... 的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代碼上;有一個過渡:在列表中的CSS爲0.2s。刪除它解決了我所有的問題。 –

回答

0

更多的代碼將是有益的。例如,您在標籤上添加了onclick屬性,再加上ng-click事件。如果不知道onclick函數在做什麼,很難說出發生了什麼。

此外,在視圖中,您將項目附加到名爲vm的作用域上的屬性,但在您的控制器中,您將其直接附加到此/ self。是否有更多的代碼將其移動到vm對象?

聽起來好像您正在處理圍繞您的API調用的計時問題,但很難確定而不會看到更多的代碼。

+0

關於你的第二段,我想他正在使用*控制器作爲*語法。 – muenchdo

+0

我想也是這樣,但我們不知道沒有看到該代碼。 – abiwer

+0

我已經添加了onClick事件的代碼。 ng-click調用我最初發布的getItems()函數。 「vm」是對我正在使用的控制器的引用 - 我希望你能相信我。我認爲問題可能歸結爲時間 - 如果是這樣的話,我該如何解決它? –