考虑以下:
.state('manager.staffList', {url:'^/staff?alpha', templateUrl: 'views/staff.list.html', data:{activeMenu: 'staff'}, controller: 'staffListCtrl'})
.state('manager.staffDetail', {url:'^/staff/{id}' , templateUrl: 'views/staff.html', data:{activeMenu: 'staff'}, controller: 'staffDetailsCtrl'})
.state('manager.staffDetail.view', {url:'/view', templateUrl: 'views/staff.details.html', data:{activeMenu: 'staff'}})
.state('manager.staffDetail.view.schedule', {url:'/schedule', templateUrl:'views/staff.view.schedule.html', data:{activeMenu: 'staff'}})
.state('manager.staffDetail.view.history', {url:'/history' , templateUrl:'views/staff.view.history.html', data:{activeMenu: 'staff'}})
.state('manager.staffDetail.view.log', {url:'/log', templateUrl:'views/staff.view.log.html', data:{activeMenu: 'staff'}})
.state('manager.staffDetail.view.files', {url:'/files', templateUrl:'views/staff.view.files.html', data:{activeMenu: 'staff'}})
.state('manager.staffDetail.edit', {url:'/edit', templateUrl: 'views/staff.edit.html', data:{activeMenu: 'staff'}})
Run Code Online (Sandbox Code Playgroud)
如果我去domain.com/staff/1234/view,我如何默认为manager.staffDetail.view.schedule子状态?
我有.when('/center', '/center/question')我的角度网络应用程序.
当我输入'/center'我的浏览器时,它将重定向到'/center/question'我期望的但是当我点击<a ui-sref="center" href="#/center"></a>它时,它不会重定向并只保留在网址上'/center'.
我的控制台没有错误,我不知道为什么.
我在这里看到一个类似的问题角度UI-路由器$ urlRouterProvider.当不能正常工作了.我尝试了答案,但它仍然没有为我工作.
这是我的coffeescript代码:
whenConfig = ['$urlRouterProvider', ($urlRouterProvider) ->
# default url config
$urlRouterProvider
.otherwise '/center'
.when '/center', '/center/question'
]
stateConfig = ['$stateProvider', ($stateProvider) ->
# nested url config
capitalize = (s)->
s[0].toUpperCase() + s[1..]
mainConfig = ({
name: name
url: "/#{name}"
templateUrl: "templates/#{name}.html"
controller: "#{capitalize name}Ctrl"
} for name in ['center', 'keywordList', 'keywordConfig', 'log', 'stat'])
centerConfig = ({
name: "center.#{name}"
url: …Run Code Online (Sandbox Code Playgroud) 我有这种状态结构:
.state('places',
{
url:'/places',
controller:'PlacesController',
templateUrl:'views/places.html'
})
.state('places.city',
{
url:'/:city',
templateUrl:function(stateParams)
{
return 'views/places/'+stateParams.city+'.html';
}
});
Run Code Online (Sandbox Code Playgroud)
它工作得很好,除非URL /places之后没有城市.
如何templateUrl在子状态中具有默认值?
我认为最好的方法是设置ui-view PlacesController,但这似乎是不可能的.
我正在做一个Angular应用程序,其中表的行各有一个按钮,点击这些按钮时,应该为按钮所在的行打开一个新选项卡.
我需要将参数传递到以这种方式创建的新选项卡中.我在状态初始化中声明了参数:
.state('viewlisting', {
url: "/listings/:id",
params: {
'action': '',
},
controller: 'ListingsController',
templateUrl: "partials/listings/view_listing.html"
});
Run Code Online (Sandbox Code Playgroud)
按钮有这样的东西:
ui-sref='viewlisting({id:"+data+", action:"images"})'
Run Code Online (Sandbox Code Playgroud)
传递参数,一切都按预期工作.
//URL: /#/listings/42
$state.params.action //returns "images"
$state.params.id //returns "42"
Run Code Online (Sandbox Code Playgroud)
但是添加target="_blank"到<a>标记会导致$ state.params对象返回以下内容:
//URL: /#/listings/42
$state.params.action //returns ""
$state.params.id //returns "42"
Run Code Online (Sandbox Code Playgroud)
我已经搜索了几个小时,我已经查看了ui-router文档和问题跟踪器,以找到解决我情况但我什么也没找到的东西.
状态参数是否未在target='_blank''ed ui-sref链接上传递?
我正在测试UI-Router嵌套状态,但我无法在父/子场景中设置默认状态,请帮忙.
库:
导航路径:
/ - home
/settings - parent state/page
/settings.default - child 1
/settings.mail - child 2
/settings.phone - child 3
Run Code Online (Sandbox Code Playgroud)
预期行为:
导航到时/settings,应触发/加载默认子项"常规"状态/页面
实际行为:
如果我将'settings'状态设置为'abstrat:true',则会出现错误:
Error: Cannot transition to abstract state 'settings'
at Object.transitionTo (angular-ui-router.js:3143)
at Object.go (angular-ui-router.js:3068)
at angular-ui-router.js:4181
at angular.js:16299
at completeOutstandingRequest (angular.js:4924)
at angular.js:5312
Run Code Online (Sandbox Code Playgroud)
如果我删除'abstrat:true',则没有错误,但是当我导航到/ settings时,默认子状态/页面 - 一般状态未触发,settings.html显示但未加载
app.js:
angular.module('test',['ui.router','sails.io']) //config routing
.config(['$stateProvider','$urlRouterProvider','$locationProvider',
function($stateProvider,$urlRouterProvider,$locationProvider) {
$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);
$stateProvider
.state('home', {
url: '/',
templateUrl: 'views/index.html',
controller: 'IndexController'
})
.state('settings', {
abstract: …Run Code Online (Sandbox Code Playgroud) 我用ui-router.
这是我的嵌套状态:
$stateProvider
.state('books', {
abstract: true,
url: '/books',
controller: 'BooksCtrl',
templateUrl: 'contents/books.html'
})
.state('books.top', {
url: '/top',
templateUrl: 'contents/books-top.html'
})
.state('books.new', {
url: '/new',
templateUrl: 'contents/books-new.html'
});
Run Code Online (Sandbox Code Playgroud)
如何将books.new状态设置为books抽象状态的默认子项,那么当你点击/booksui-router重定向到/books/new?
我正在使用角度UI-Router和bootstrap折叠面板为样式指南构建侧边栏.我的侧边栏是"工作"但我得到了
Error: Cannot transition to abstract state 'parent'
单击子状态时.在我真正的解决方案中,有许多父母有子组,父母确实是抽象的(即他们不代表物理页面或状态).我知道我不能直接链接到父状态,我不相信我,我只需要ui-sref在父面板中设置它们,这样我就可以通过设置ui-sref-active属性让父母保持打开状态.
我在plunker上运行了一个示例:http://plnkr.co/edit/bnvGcaOvzW4que8g3vh7?p = preview
代码供参考:
angular.module('app', ['ui.router'])
.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/");
$stateProvider
.state('home', {
url: "/",
templateUrl: "layout.html"
})
.state('parent', {
abstract: true,
url: '/parent',
templateUrl: "layout.html"
})
.state('parent.child', {
url: "/child",
templateUrl: "child.html"
})
});
Run Code Online (Sandbox Code Playgroud)
的layout.html
<div class="container-fluid">
<div class="row">
<div class="col-xs-3">
<a ui-sref="home">Home</a>
<div class="panel-group" id="sidebar">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#sidebar" data-target="#parent"
class="collapsed">Parent</a>
</h4>
</div>
<div id="parent" ui-sref="parent" …Run Code Online (Sandbox Code Playgroud) javascript twitter-bootstrap angularjs twitter-bootstrap-3 angular-ui-router