如何在AngularJS中重定向后显示临时短暂消息/通知?

时间:2018-05-23 06:40:55

标签: javascript angularjs

我想在使用

重定向之前显示临时消息
$location.path("/customerList");

但坚持重定向并显示相同的持续时间,就好像我没有重定向一样。

我使用AngularJS 1.5.0和bootstrap 3 目的是允许更改最终用户的视图,但提供有关导致重定向的操作的反馈。 “用户XYZ成功保存”,其中XYZ很可能是保存后从API返回的JSON的一些属性。

显示消息时,消息必须是动态的。

2 个答案:

答案 0 :(得分:0)

如何使用$ location($ locationChangeStart / $ locationChangeSuccess)的事件或使用以下代码

$scope.$on('$routeChangeStart', function($event, next, current) { 
   // ... you could trigger something here ...
 });

答案 1 :(得分:0)

好的,这是我的建议

  1. Check this plunkr (click on 'section 1' and then click the button which you'll see in that route)。你不能使用$location传递一个带有消息的参数,因为这会污染你的网址。因此,您可以创建一个服务来保存该数据。此外,创建一个站点级控制器来处理站点级逻辑。
  2. app.js

    app.controller('siteCtrl',function($rootScope,$scope,msgSvc,$timeout){
    
     $scope.$on('$routeChangeStart', function($event, next, current) { 
       var timer ;
        if(next.$$route.originalPath === '/two'){
          $scope.msg = msgSvc.getMsg();
          timer = $timeout(function(){
               $scope.msg = '';
               msgSvc.setMsg('');
          },2000);
        }
     });
    })
    
    function OneController($scope,$location,msgSvc){
        $scope.doSomething = function(){
          // set some msg and then go the route
            msgSvc.setMsg('Success navigation from Section 1');
            $location.path("/two");
        };
    }
    
    1. 创建一个可以收听此事件的组件,并相应地显示。