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”
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”
您可以创建一个状态改变监听器,监听状态变化全球
$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) {
$rootScope.previousState = from;
});
然后,您可以用$rootScope.previousState.name
访问以前的状态名称,并使用此作为约束值
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>
我写了下面的.js文件的功能,并把它称为从标签的NG-点击,但它显示“光标”永远旋转函数返回(){ $ window.history.back(); } – user698532
感谢@Hitmands,这个工作做了一些小改动 – user698532