2016-05-04 71 views
0

1)我的HTML表单的父状态/视图有下面的锚标签,它需要我的状态点击后如何动态地设置UI-SREF值到当前状态

  <a class="btn btn-default" ui-sref="custom.email.send"> 

2)但是,同样的表单从2个不同的路由被调用

3)因此,我想动态设置ui-sref的值,以指向调用它的状态的父状态!

对于离,如果上面的表格是从国家“custom.email.send”叫那么UI-SREF应该指向“custom.email”

回答

0

您可以创建一个状态改变监听器,监听状态变化全球

$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
     $rootScope.previousState = from; 
    }); 

然后,您可以用$rootScope.previousState.name访问以前的状态名称,并使用此作为约束值

1

http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state

$rootScope.linkHistoryBack = '/'; 
 
$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
 
    $rootScope.linkHistoryBack = $state.href(from, fromParams, { 
 
    absolute: true 
 
    }); 
 
});
<a ng-href="{{$root.linkHistoryBack}}">Go Back</a>

,或者建一个指令:

angular 
 
    .module('uiSrefUtils', ['ui.router']) 
 
    .directive('uiSrefBack', function uiSrefBackDirectiveFactory($state) { 
 
    
 
    return function(iScope, iElement, iAttributes) { 
 
     
 
     iElement.attr('href', '/'); 
 
     
 
     $rootScope.$on('$stateChangeSuccess', function(e, to, toP, from, fromP) { 
 
     var link = $state.href(from, fromP, { 
 
      absolute: true 
 
     }); 
 
     
 
     return iElement.attr('href', link); 
 
     }); 
 
     
 
    }; 
 
    }) 
 
; 
 

 
// use in your app 
 
angular.module('myApp', ['ui.router', 'uiSrefUtils']);
<a ui-sref-back>Return</a>

+0

感谢@Hitmands,这个工作做了一些小改动 – user698532