2016-05-23 2 views
2

У меня есть простой AngularJs приложения, в homepage.html У меня есть де-DataGrid со всеми данными, чтобы onSelectionChanged метода я добавил следующий код:Как сохранить данные при изменении местоположения в приложении AngularJs?

onSelectionChanged: function (e) { 
     $scope.itemIdFromShowButton = e.selectedRowsData[0].id; 
     $scope.cardSelectedArray = e.selectedRowsData[0]; 
     $scope.allRecordsOfCard= businessLogicOfMyApp.getVardsRecordsByCardId($scope.itemIdFromShowButton, $scope.recordsArray); 
     $scope.localArray = $scope.chaptersArray.concat($scope.jdskla); 
     console.log($scope.localArray); 
    }, 

здесь я получить все отчеты карты и Concat его вторичным массив, он работает: enter image description here

, но после моего местоположения changet - массив пуст: enter image description here

Я хочу использовать это массив как DATASOURCE в моей дх-TreeView в моей CardDetail.html странице.

myApp.config(['$routeProvider', function ($routeProvider) { 
$routeProvider.when('/', { 
    templateUrl: "Partials/HomePartial.html", 
    controller: "defaultController" 
}) 
.when('/createnewcard', { 
    templateUrl: "Partials/CreateNewCard.html", 
    controller: "defaultController" 
}) 
.when('/carddetail/:cardId', { 
    templateUrl: "Partials/CardDetails.html", 
    controller: "defaultController" 
}) 
.when('/createnewrecord/:cardId', { 
    templateUrl: "Partials/CreateNewRecordToCard.html", 
    controller: "defaultController" 
}) 
    ; 

$routeProvider.otherwise({ redirectTo: '/' }); 
}]); 

Может быть, кто-нибудь знает, как я могу сохранить свои данные? Спасибо за ваши ответы!

P.S. i инициализирован $scope.localArray = []; в заголовке моего кода.

ответ

1

использование $localStorage, чтобы сохранить массив, когда становится заселена, и если изменения состояния проверить значение в локальном хранилище. Если в локальном хранилище есть значение, это значение для значения массива

0

Это происходит потому, что ваш контроллер создается для каждого шаблона. Вместо того, чтобы писать controller: "defaultController" внутри вашего провайдера маршрутов, создайте страницу div на html, где вы загрузите свое представление и напишите ng-controller="defaultController" в этом div. Пример:

<div ng-contoller="defaultController"> 
<!-- other part of your code --> 
<div ng-view> </div> 
</div> 
+0

Я надеюсь, что это не сработает. Здесь произойдёт изменение DOM, и он снова будет инициализирован контроллером. –

+0

Изменения в DOM произойдут только в ng-view div –

+0

Я сделал это, когда создал свое приложение). Проблема была в том, что у меня есть два объекта моего контроллера, для проверки, что я написал console.log ("Бибб"); в верхней части моего jsController, и после запуска у меня два сообщения в консоли. Я переписал свой код и получал идентификатор от url и получал записи по id с моей фабрики. Thnx для вашего ответа. –

0

вы можете использовать localstorage или угловые службы/фабрику для хранения вашего массива и получения его при изменении состояния путем ввода этой услуги/фабрики в ваш контроллер.

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

  • Нет связанных вопросов^_^