2015-12-23 81 views
4

我正在爲教程創建AngularJS應用程序,我需要從服務填充教程數據並在UI的三個面板中顯示它。 第一個面板包含主題列表,第2個 - 子主題列表和第3個包含數據。

最初當我們沒有選擇任何主題時,服務應該返回1個主題的子主題和第1個子主題的數據。

當您點擊任何其他子主題時,服務應該返回給子主題的數據。但只要狀態發生變化,控制器就會重新實例化,並丟失最初在UI上顯示的主題/子主題列表的數據。

請參閱POC http://embed.plnkr.co/v16rd5v1IjB14btfY7PQ/

可能的解決方案 - 當我們點擊任何一個子主題,我們應該從的localStorage或sessionStorage的overpopulate上衣/子主題數據的地方,並與業務數據進行合併,將擁有所需的輸出。

有沒有其他的方法來實現3級動態導航使用Angular?

+0

這可能是有益的:http://stackoverflow.com/questions/27696612/how-do-i-share-scope-data-between-states-in-angularjs-ui-router –

回答

3

正如你所說的,localstorage總是一種很好的數據存儲方法。我個人更喜歡使用$rootscope模型來傳遞狀態數據。

app.controller('topicController', ['$scope','TopicProvider','$rootScope',function($scope,TopicProvider,$rootScope){ 

    var t = TopicProvider.get(function(tp){ 
    $scope.t = tp.topics; 
    $scope.st = tp.subtopics; 
    $scope.d = tp.data; 
    }); 
    //pass data between the states 
    $rootScope.dummyModel = "test"; 
}]); 



app.controller('anotherController', ['$scope','TopicProvider','$rootScope',function($scope,TopicProvider,$rootScope){ 
    //get that model 
    alert($rootScope.dummyModel); 
}]); 
+0

謝謝,這解決了我的問題! :) –

3

您可以將數據存儲在服務中,狀態更改後不會重置。

Here is類似的問題。