angularjs ui-router默认子状态空url方法

时间:2015-04-02 19:03:14

标签: javascript angularjs angular-ui-router

我觉得这有点傻了,我已经看了很长时间并且搜索了这个,并且知道设置默认子状态的两种主要方法是:

 url: '',
 or 
 $urlRouterProvider.when('/route', '/newroute');

我尝试使用空url配置,因为当父状态设置为abstract:true时,重新路由选项会导致不必要的问题。所有模板都包含一个ui-view元素。 我的代码目前看起来与此类似:

       .state('data', {
            url: "/data",
            templateUrl: "views/data.php",
        })
        .state('data.overview', {
            url: "",
            templateUrl: "views/subviews/data.overview.php",
        })
        .state('data.overview.view', {
            url: "",
            templateUrl: "views/subviews/subviews/data.overview.view.php"
        })
        .state('data.overview.view.msgfav', {
            url: "",
            views: {
                msg: {
                    templateUrl: "views/subviews/subviews/data.overview.view.msg.php"
                },
                fav: {
                    templateUrl: "views/subviews/subviews/data.overview.view.fav.php"
                }
            }
        })

以及一些更多的儿童状态(由于并不意味着默认,因此似乎并不相关)。我尝试使用父状态作为抽象:true并且没有设置它,url为空且没有url设置,只有最接近的子状态而不是所有嵌套状态。坚持使用ng-include可以作为默认状态,但感觉不洁。直接对每个孩子进行操作可以正常工作。我真的不确定我在这里失踪了什么,但我确定它的一些小细节会让我看起来很傻。

1 个答案:

答案 0 :(得分:0)

我不确定我是否应该回答我自己的问题,但认为这是合适的。

我认为你不能直接在ui-sref中定位父状态(抽象)并期望它默认为子状态并填充视图,而是在链接中定位子状态。然后必须在链中设置每个父状态以抽象到您想要自动填充的点。我没有发现这一点完全清楚,这篇文章的答案中有一部分让我对此有所了解;

“首先,将属性添加到'manager.staffDetail.view'的抽象状态:true。这不是必需的,但是你要设置它,因为你永远不会去直接这个州,你总是会去其中一个孩子的州。“

angularjs ui-router default child state