2014-05-10 160 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

順便說一句,如果我的答案幫助你,你可以通過點擊旁邊的勾號來接受它;) –