相关疑难解决方法(0)

使用UI-Router转换到父状态时将用户定向到子状态

考虑以下:

.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子状态?

javascript angularjs angular-ui angular-ui-router

76
推荐指数
4
解决办法
6万
查看次数

Angular UI-Router $ urlRouterProvider.当我点击<a ui-sref="...">时不工作

我有.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)

javascript coffeescript angularjs angular-ui-router

18
推荐指数
1
解决办法
3万
查看次数

使用ui-router将父状态默认为子状态

我有这种状态结构:

.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,但这似乎是不可能的.

angularjs angular-ui-router

8
推荐指数
3
解决办法
7408
查看次数

ui-router:在新选项卡中打开状态,目标="_空白",参数丢失

我正在做一个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链接上传递?

state angularjs angular-ui-router ui-sref

7
推荐指数
1
解决办法
1万
查看次数

ui-router默认子状态不起作用

我正在测试UI-Router嵌套状态,但我无法在父/子场景中设置默认状态,请帮忙.

库:

  • 角度1.3.15
  • ui路由器:0.2.15

导航路径:

/ - 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)

angularjs angular-ui-router

5
推荐指数
1
解决办法
5386
查看次数

在ui-router中设置抽象嵌套状态的默认子级

我用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

javascript url-routing angularjs angular-ui-router

5
推荐指数
1
解决办法
1791
查看次数

尝试在侧边栏中突出显示父级时"无法转换为抽象状态"

我正在使用角度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

4
推荐指数
1
解决办法
1万
查看次数