Javascript 如何在ui路由器中使用别名?
我使用angular ui在angular js中进行路由。 我有一个类似的url。但我想使用别名和类似的url。在有角度的ui中可能吗 这是我的配置Javascript 如何在ui路由器中使用别名?,javascript,angularjs,angular-ui-router,aliases,Javascript,Angularjs,Angular Ui Router,Aliases,我使用angular ui在angular js中进行路由。 我有一个类似的url。但我想使用别名和类似的url。在有角度的ui中可能吗 这是我的配置 angular.module('News', ['ui.router']) .config(function ($stateProvider, $urlRouterProvider) { $stateProvider .state('news', { url: "/news", templa
angular.module('News', ['ui.router'])
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('news', {
url: "/news",
templateUrl: "modules/news/views/news.html",
controller: 'NewsCtrl'
})
.state('news.detail', {
url: '^/news/:id',
views: {
'@': {
templateUrl: 'modules/news/views/news_detail.html',
controller: 'NewsDetailCtrl'
}
},
});
})
当然有可能。但要实现这一点,您需要以某种方式将
新闻标题
映射到14,我猜这是一个id
。你可以这样写:
$stateProvider
.state('news', {
url: "/news/:news_title",
templateUrl: 'news.html',
...
})
在这种情况下,您可以像http://http://servername/#/news/latest_bbc_news
,您可以在控制器中使用$stateParams
如何将新闻标题
映射到14
取决于您的型号
更新
例如,您可能可以编写如下内容:
$stateProvider
.state('news', {
url: "/news/:news_title",
templateUrl: 'news.html',
resolve : {
news_item: function(NewsService, $stateParams) {
return NewsService.getByTitle($stateParams.news_title);
},
},
controller:['$scope','$state','news_item',
function ( $scope , $state , news_item){
$scope.news_item= news_item;
}]
})
然后,在新闻服务中
需要实现方法getByTitle
直接从后端获取新闻标题,或者从后端获取所有新闻并将其缓存在一个变量中,如
var news = [
{ID: 1, Title : 'A', Content : 'XXXXXXXXXXXXXXXXXXXX',},
{ID: 2, Title : 'B', Content : 'YYYYYYYYYYYYYYYYYYYY',},
];
您必须编写自己的代码来循环浏览,并按标题查找所需的新闻
同样,ui路由器只是为您设置路由规则,您始终有责任提供正确的内容。我的意思是ui路由器不知道哪些新闻具有id 14和相应的标题,它只能从后端获取并由您处理 你能给我你的配置脚本吗?我在我的问题中已经更新了配置。我只是在将新闻标题映射到新闻id时遇到了问题…你能给我一些解决方案吗?你有很多选择,例如,如果你可以直接将:news\u标题发送到你的后端,让后端找到带有:news\u标题的新闻。或者您可以一起获取所有新闻,在控制器中,您可以循环浏览整个新闻数组,并找到标题为:news_的新闻。如果您想通过angular ui方式解决问题,也可以将此逻辑移动到您的angular模型。angular UI是否提供了一些使用别名的功能?我实际上不太明白这个问题,是不是它代替了使用
http://servername/#/news/14
,您想要类似于``的东西吗?你想在url中使用新闻标题而不是id吗?如果是这样的话,它不像alias,angularjs也不会知道如何将新闻标题映射到新闻id,因为ui路由器只是为你设置路由规则,但内容必须由你自己连接和服务。