2016-10-21 38 views
1

我有一個簡單的角度函數,我調用一個服務來獲取數據並將它作爲JS數組存儲爲一個角度範圍。問題是範圍對象中的數組在我的HTML中不可見。這裏有一件事是我將我的視圖重定向到另一個HTML,我不確定這是否是一個原因。Angular Scope對象不保留值並在HTML中返回null

cart.items(localStorage.getItem('userEmail')).then(function(response){ 
    $.each(response.data, function(index, element) { 
       $scope.vendorCartList.push(element); 
    }); 
    $location.path('/vendorHome');         
}) 

當我在調試控制檯中轉儲這個範圍數組$ scope.vendorCartList時,它會正確顯示內容。 在我的HTML vendorHome.html中,我試圖通過ng-repeat檢索列表,並且它永遠不會工作。我試圖轉儲範圍對象,其打印null,不知道我在這裏丟失什麼

<div> 
    {{vendorCartList}} 
</div> 
<div ng-repeat="elements in vendorCartList"> 
    {{elements}} 
</div> 

回答

0

重定向正是原因。嘗試評論它。服務在一個範圍內被調用,當您使用$location.path('someUrl')進行重定向時,範圍會發生變化。因此,這個問題。

如果在vendorHome頁面中需要購物車項目,請在那裏注入服務,然後在vendorHome's控制器中調用該功能。

+0

謝謝,這對我很有用。我在vendorController中注入了服務並調用了該函數,然後我可以在HTML – CrazyMac

+0

中獲取此列表,我很高興能夠提供幫助。 :) – sisyphus

0

試試這樣,沒有任何索引的作用。

cart.items(localStorage.getItem('userEmail')).then(function(response){ 
    $.each(response.data, function(element) { 
       $scope.vendorCartList.push(element); 
    }); 
    $location.path('/vendorHome');         
}) 
+0

我試過但沒有區別。僅供參考,使用我之前的代碼將它轉儲到控制檯時,它顯示內容但在HTML中不可見 – CrazyMac

+0

在路由之後加載頁面時是否初始化範圍變量? – Jigar7521

+0

初始化發生在方法之前,但我將其重定向到新頁面。所以我不認爲它會回來並重置它。 – CrazyMac