2015-05-26 6 views
1

Мне нужно позвонить $route.reload(); в контроллер 2 addData API-вызов, чтобы я мог добавлять дополнительные данные в свой интерфейс. Но затем текст «Данные добавлены успешно» уходит из-за обновления страницы.Показать предупреждение после перезагрузки страницы

Контроллер 1:

$rootScope.$on('reloaded', function(event, data) { 
     $scope.$parent.alerts.length=0; 
     $scope.$parent.alerts.push({type: 'success',msg: 'Data added successfully'}); 
    }); 

контроллер 2:

$scope.add = function() { 
someAPIService.addData(JSON.stringify($scope.rows)).success(function(response) { 
      ngDialog.close('ngdialog1'); 
      $route.reload(); 
      $rootScope.$emit('reloaded', "true"); 
     }); 
} 

HTML-часть:

<section> 
    <div ng-controller="controller3"> 
    <alert ng-repeat="alert in alerts" type="{{alert.type}}" close="closeAlert($index)">{{alert.msg}}</alert> 
    </div> 

    <div class="row form-inline" ng-controller="controller2 as vm"> 
     <!-- Table data with text fields--> 
    </div> 

    <script type="text/ng-template" id="addDataDialog"> 

    <div id="frm" ng-controller="controller1" class="col-xm-6"> 

    <div class="form-group"> 
     <!-- Labels with text fields--> 
    </div> 

     <button class="ngdialog-button" ng-click="add()">Save</button> 
    </div> 
    </script> 
    </section> 

ПРИМЕЧАНИЕ: Оба контроллера находятся в одном файле JS и используются для одного и того же HTML-файла.

+0

где 'контроллер 1' ложь? нужна html-структура тоже –

+1

Зачем вам «перезагружать»? Может быть, вы можете просто обновить '$ scope'? – k102

+1

Я думаю, что когда вы вызываете '$ route.reload()', контроллер немедленно уничтожается, поэтому он никогда не достигнет '$ rootScope. $ Emit' – devqon

ответ

1

Как вы хотите загрузить только последний список записей, который находится на стороне сервера. Тогда после того, как сделаете почтовый звонок, нет необходимости использовать $route.reload();. Вам нужно сделать только вызов ajax, чтобы получить список последних записей, который поможет решить вашу проблему. Для создания Ajax вам необходимо обратиться $http

$route.reload() привыкает только тогда, когда вам необходимо загрузить контроллер снова с заданным шаблоном в вашем $routeProvider при состоянии

+0

сделайте upvote пожалуйста –

+1

уверенное ok..upvote к вам также. –

0

только простой намек на ответ:

  1. добавить (специфичное) печенье (с JavaScript) перед вызовом перезагрузки (использование, например, Cookies lib)
  2. читать на перезаряжания,
  3. , а затем удалять

Также вы можете использовать local storage, если он доступен вместо печенья, используя одни и те же действия:

  1. добавить конкретную запись в локальном хранилище, перед вызовом перезагрузки
  2. читать на перезагрузкой
  3. , а затем удалить его

Другой вариант для поддержания состояния на стороне клиента, чтобы использовать параметры URL, но они не будет использоваться для перезагрузки страницы.

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