ui-router路由2个具有不同模板的不同状态

时间:2014-05-10 04:22:39

标签: angularjs angular-ui-router

我使用的是ui-router 0.2.10。我的应用程序有两个不同的模板,index.html& index2.html。我创建了一个抽象的状态,并且我引用了两个索引'在他们各自的状态,问题是我可以访问第一条路线罚款,但当我尝试访问下一条路线时,它只是默认为第一条路线。抽象模板位于同一文件夹中。

我在这里缺少什么?

 .config(["$stateProvider", "$urlRouterProvider", function(sp, urp) {

    urp.otherwise("/index1");


    sp.state("index1", {
        abstract:true,
        url: "/index1",
        templateUrl: "index.html" 
    });
    sp.state("index1.id", {
        url: "/id",
        template: "views/partials/index.partial.html",
        controller: function($scope,$state){
            $state.go('index1.id');

        }
    });

    sp.state("index2", {
        abstract:true,
        url: "/index2",
        templateUrl: "index2.html"
    });
    sp.state("index2.id", {
        url: "/id",
        template: "views/partials/index2.partial.html",
        controller: function($scope,$state){
            $state.go('index2.id');

        }
    });

}])

1 个答案:

答案 0 :(得分:1)

我假设你试图进入一个抽象的状态并且不会起作用,因为抽象状态只会在你去找那个抽象状态的孩子时被激活,即你不能直接转到index1index2,因此这不合法:

urp.otherwise("/index1");应该是:urp.otherwise("/index1/id");而不是。

为什么你要在他们自己的控制器内再次进入州? $state.go('index2.id');毫无意义,因为当代码行为reached时,您已处于状态index2.id。我认为你的意思是将这些代码行放在抽象状态的控制器中!最后一点,不要忘记你的抽象状态必须自己拥有ui-view,因为他们正在托管子状态。

See plunk