2014-05-10 117 views
1

我正在使用ui-router 0.2.10。我的应用程序有两个不同的模板,index.html & index2.html。我创建了一个抽象状态,并且我在两个状态中都引用了这两个索引。问题是我可以访问第一个路由,但是当我尝试访问下一个路由时,它只是默认第一个路由。抽象模板位于同一个文件夹中。ui路由器路由使用不同模板的2种不同状态

缺少什么我在这里?

.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'); 

     } 
    }); 

}]) 
+0

该代码似乎可以互换使用'template'和'templateUrl';然而,'template'应该包含原始HTML,而'templateURL'则指向一个文件。 –

回答

1

我假设你试图去一个抽象的状态,这将无法正常工作,当你去到那个抽象的国家的孩子抽象状态才会被激活,即可以” t直接去index1index2,所以这是不合法的:

urp.otherwise("/index1");它应该是:urp.otherwise("/index1/id");来代替。

另外你为什么要在自己的控制器内再次进入状态? $state.go('index2.id');是没有意义的,因为在该行代码为reached时,您已经处于index2.id状态。我想你打算把这些代码行放在抽象状态的控制器中!最后一点不要忘记,你的抽象国家必须自己有一个ui-view,因为他们正在主持儿童国家。

See plunk

+0

嗨穆罕默德,谢谢你回答我的问题,你是一个拯救生命的人。我现在意识到我的错误。但我有一个问题,除了我的抽象国家没有使用ui-view的方式是我宣布每个国家导致任何问题的方式吗?在sp.state中......? – Jimi

+0

并非如此,除了调用$ sate.go去与控制器所在的状态相同外,一切看起来都不错,正如我在我的回答中提到的那样。 –

+0

顺便说一句,如果我的答案帮助你,你可以通过点击旁边的勾号来接受它;) –