我正在迁移基于AngularJS的应用程序以使用ui-router而不是内置路由。我将其配置如下所示
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl : 'views/home.html',
data : { pageTitle: 'Home' }
})
.state('about', {
url: '/about',
templateUrl : 'views/about.html',
data : { pageTitle: 'About' }
})
});
如何使用pageTitle变量动态设置页面标题?使用内置的路由,我可以
$rootScope.$on("$routeChangeSuccess", function(currentRoute, previousRoute){
$rootScope.pageTitle = $route.current.data.pageTitle;
});
然后将变量绑定到HTML中,如下所示
<title ng-bind="$root.pageTitle"></title>
是否有类似事件可以挂接到ui-router上?我注意到有“ onEnter”和“
onExit”函数,但它们似乎与每个状态相关,将需要我重复代码以为每个状态设置$ rootScope变量。
使用$stateChangeSuccess
。
您可以将其放在指令中:
app.directive('updateTitle', ['$rootScope', '$timeout',
function($rootScope, $timeout) {
return {
link: function(scope, element) {
var listener = function(event, toState) {
var title = "Default Title";
if (toState.data && toState.data.pageTitle) title = toState.data.pageTitle;
$timeout(function() {
element.text(title);
}, 0, false);
};
$rootScope.$on('$stateChangeSuccess', listener);
}
};
}
]);
和:
<title update-title></title>
演示: http :
//run.plnkr.co/8tqvzlCw62Tl7t4j/#/home
代码: http :
//plnkr.co/edit/XO6RyBPURQFPodoFdYgX?p =
preview
即使$stateChangeSuccess
在$timeout
已经所需的历史是正确的,至少在我测试过自己。
编辑:2014年11月24日-声明性方法:
app.directive('title', ['$rootScope', '$timeout',
function($rootScope, $timeout) {
return {
link: function() {
var listener = function(event, toState) {
$timeout(function() {
$rootScope.title = (toState.data && toState.data.pageTitle)
? toState.data.pageTitle
: 'Default title';
});
};
$rootScope.$on('$stateChangeSuccess', listener);
}
};
}
]);
和:
<title>{{title}}</title>
演示: http :
//run.plnkr.co/d4s3qBikieq8egX7/#/credits
代码: http :
//plnkr.co/edit/NpzQsxYGofswWQUBGthR?p =
preview
问题内容: SPA是Angular的绝妙之处,但是如果我需要其他与index.html不相关的页面怎么办,具有不同ui视图的UI-Router状态又如何实现呢? 例如,我有 index.html : app.js : 现在,我需要与index.html完全不同的 login.html (不需要索引的页眉,页脚,侧边栏),但是config stateProvider仅查找index.html u
在跳转到新页面的时候一并设置标题 QN.navigator.push({ url: 'http://www.taobao.com', title: '页面标题' query: { }, settings: { animate: true, //是否展示动画 request: true, } error(err
问题内容: 假设我有以下3个Angular UI Router状态: 如果直接转换为,我该如何告诉Angular UI Router进入状态? 理想情况下,我想要的是这样的: 然后,在我的代码中,我希望$ state.go(’adminCompanies’)等同于$ state.go(’adminCompanies.list’) 问题答案: 由于您的应用程序当前已设置,因此您不需要任何明确的逻辑。
本文向大家介绍使用vue-router切换页面时实现设置过渡动画,包括了使用vue-router切换页面时实现设置过渡动画的使用技巧和注意事项,需要的朋友参考一下 背景 今天在编写页面时,看到页面没有任何效果就只是直入直出,完全没有一点逼格,所以想要实现类似于原生app的那种切换页面时的特效,遂开始google,发现网上各种方案都是各有优缺点,于是整理了自认为优雅的方案并记录下来. 实现难点 如何
本文向大家介绍angular-ui-router 页码参数,包括了angular-ui-router 页码参数的使用技巧和注意事项,需要的朋友参考一下 示例 类似于,int但仅接受正整数(当有page参数时,可用于分页。 定义: 并使用: 柱塞和相关的答案。
问题内容: 如何使用从数据库中获取的名称作为templateUrl文件名? 我已经试过了: 如果我的$ rootScope.template来自数据库查询,那似乎不起作用。不知道为什么,但是不起作用。 如果在我的控制器中执行$ rootScope.template =“ whatever.html”,则一切正常,但是,如果我从数据库中查询模板,则什么也不会发生。templateProvider中的