我是angularJs(版本1)的新手,我正在尝试使用ui-router为我的应用程序编写路由。
我的应用程序使用以下链接在浏览器上打开:
转换为http://localhost:8000/ 的还有其他一些链接,例如http://localhost:8000/#/contactus和http://localhost:8000/#/posts等。
问题是:
从远程获取用户的数据。目前,我已经硬编码了用户名以获取详细信息。
我希望通过在网址中传递用户名来使其动态化,如下所示:
http://localhost:8000/ {MYNAME} /
示例:
请建议,我应该如何写路由(使用ui-router状态)。我不想改变网址。
我应该创建.htaccess文件来重写网址还是以角度某种方式创建?
$stateProvider
.state('main', {
views: {
"myWidget": {
template: "<div ui-view='my_nested_view' id='my_nested_view'> <div/>",
controller: myWidgetCtrl
}
}
})
.state('main.contactus', {
url: '/contactus',
views: {
"my_nested_view@main" : {
template: 'contactus.html',
controllerAs: 'contactusCtrl',
controller: contactusController
}
}
})
.state('main.posts', {
url: '/posts',
views: {
"my_nested_view@main" : {
template: postsTemplate,
controllerAs: 'postsCtrl',
controller: postsController
}
}
});
我想允许用户在网址中传递他的用户名。
例如
localhost:8000 /它会打开正确的主页。
localhost:8000 / stackg91目前没有找到错误。我想允许用户在网址中传递用户名,而不是出错,它应该打开主页。
基本网址: http://localhost:8082/#/
答案 0 :(得分:-1)
您可以使用url参数传递用户名以获取用户详细信息
你的州定义是::
$stateProvider
.state('UserDetails', {
url: "/:userId", //
templateUrl: 'UserDetails.html',
controller: 'UserDetailsCtrl'
}
})
这将是控制器:
.controller('UserDetailsCtrl', function($scope, $state, $stateParams) {
//..
var userId = $stateParams.foo; //getting userId
})
这意味着,url中的参数预计为
url: '/:userId',
将参数传递给控制器:
<a ui-sref="UserDetails({userId:'jack'})"></a>
有关ui-routing的更多参考,您可以使用this link