页面重新加载后显示警报消息

时间:2015-05-26 14:53:47

标签: javascript angularjs angularjs-routing

我必须在控制器2 $route.reload(); API调用中调用addData,以便我可以在我的UI中获取添加的数据。但是,由于页面刷新,文本“数据已成功添加”消失了。

控制器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文件。

2 个答案:

答案 0 :(得分:1)

因为您只想加载服务器端的最新记录列表。然后在发布电话后不需要使用$route.reload();。您只需要进行ajax调用即可获得可以解决问题的最新记录列表。要制作ajax,您需要参考$http

  

$route.reload()仅在您需要加载时才会使用   再次使用$routeProvider中指定模板的控制器   条件

答案 1 :(得分:0)

只是一个简单的答案提示:

  1. 在调用重新加载之前添加(特定)cookie(使用javascript)(使用例如Cookies lib),
  2. 在重新加载时阅读,
  3. 然后将其删除
  4. 如果可以使用local storage而不是使用相同的步骤,则可以使用https://drive.google.com/file/d/0BzKbcezW-5hYNElaUXZHT3dGa2s/view?usp=sharing

    1. 在调用reload之前在本地存储中添加特定条目
    2. 在重新加载时阅读
    3. 然后将其删除
    4. 维护状态客户端的另一个选择是使用url参数,但这些不会用于页面重新加载