2014-01-07 123 views
1

我正在使用Angular和ui-router。我無法啓動嵌套控制器,但如果狀態不是嵌套的,控制器將啓動。AngularUI路由器:嵌套狀態不啓動控制器

該URL是從DnaNodeListCtrl模板生成的。該模板生成看起來像一個正確的URL: http://localhost:8080/#/v1/dnanodes/a9bfd497-ce6b-4832-909e-506a9b29e46e

我的代碼如下。爲什麼我無法啓動嵌套控制器?

config.js:

var dnaMgrApp = angular.module('dnaMgrApp', [ 
    'ngRoute', 
    'ui.router', 
    'dnaMgrControllers', 
    'dnaMgrRestService' 
]); 


dnaMgrApp.config(function($stateProvider, $urlRouterProvider) { 
    // 
    // For any unmatched url, redirect to /state1 
    $urlRouterProvider.otherwise("/"); 
    // 
    // Now set up the states 
    $stateProvider 
     .state('nodeList', { 
      url: "/", 
      templateUrl: 'templates/dnaNodeList.html', 
      controller: 'DnaNodeListCtrl' 
     }) 
     .state('nodeList.nodeDetail', { 
      url: "v1/dnanodes/:nodeId", 
      templateUrl: 'templates/dnaNodeSummary.html', 
      controller: function($scope){ 
       $scope.title = 'My DNA';} 
     }); 
}); 

模板:

<div id="body-container" > 
    </div><div id="tablediv"> 
     <div ng-repeat="node in dnaNodes"> 
      <div class="dnanode"> 
       <a ui-sref="nodeList.nodeDetail({nodeId:node.id})"> 
        <table> 
         <tr><td>{{node.geneName}}</td><td><img src="{{node.statusIcon}}"></td></tr> 
         <tr><td colspan="2">2 DNA Pathways</td></tr> 
        </table> 
       </a> 
      </div> 
      <br> 
     </div> 
    </div> 
</div> 

回答

3

UI路由器工作在該嵌套狀態需要有相同的URL,你所定義的父狀態+無論這樣的方式你的嵌套狀態。

如:

如果你有網址的狀態父:/foo

然後定義嵌套鏈接的狀態:/bar

然後,你必須有觸發生成的URL嵌套狀態是:

/foo/bar 

因此,您需要在您的子網址中添加/。

編輯 只需使用:

.state('nodeList.nodeDetail', { 
    url: "/v1/dnanodes/:nodeId", 
    templateUrl: 'templates/dnaNodeSummary.html', 
    //.... 
}); 
+0

該url由父代模板中的代碼生成:ui-sref =「nodeList.nodeDetail({nodeId:node.id})」 添加斜槓只會改變添加到url的雙斜槓:「http:// localhost:8080 /#// v1/dnanodes/27ae134e-1067-4788-a97d-0981deca2e53」 – garyM

+0

@garyM您誤解了我的意思,我的意思是在子狀態的配置中添加一個斜槓。 –

+0

嗨巴巴,我確實把它放在創建雙斜槓的子狀態,並沒有解決問題。我也試圖在模板的修復中產生相同的雙斜線,並且再次沒有解決方案。我對這個原因感到困惑。 – garyM

0

父模板需要有一個地方來渲染子視圖。具體來說,父模板至少需要有<ui-view/>。這在Nested States and Nested Views指南中有解釋。