2014-05-08 40 views
0

在下面的路由定義中,如果我轉到#/ systemadmin/edit /測試它會調出SystemAdminController,但不是在我使用的子路由中定義的那個。我錯過了一些東西。角路由器UI子控制器未啓動

$stateProvider.state('systemadmin', { url: '/systemadmin', controller: 'SystemAdminController', templateUrl: 'app/templates/SystemAdmin.html?v=' + dl.buildDate }) 
     .state('systemadmin.edituser', { url: '/edit/:selectedUser', controller: function ($scope, $stateParams) { debugger; }, templateUrl: 'app/templates/SystemAdmin.html?v=' + dl.buildDate }); 
+0

那麼你提出什麼意思?父控制器將執行,子控制器也將執行。 –

+0

子控制器永遠不會執行。如果您簽出子控制器,它只是一個接收$ stateParams並在調試器中暫停的函數。這絕不會發生。 – LRFalk01

+0

看到我的答案。您需要爲子控制器注入一個$ scope。 –

回答

1

幾件事情:

  1. 你的孩子狀態控制器缺少$scope,所有控制器都需要在一個角$scope

  2. 當您轉到edituser時,systemadmin控制器也會執行以及edituser控制器。

編輯

另外,你需要定義一個大括號的參數在你的路由定義,而不是用冒號,這是ng-route語法不ui.router

{ url: '/edit/{selectedUser}' }

另一個我懷疑你可能錯過了一件事,因爲我有很多次,是你的父母國家的觀點需要有一個ui-view本身,see this working plunk

+0

我將範圍添加到子控制器。這不正確,它沒有實例化。如果我讓它不是一個孩子,我打了調試器。 – LRFalk01

+0

您是否將參數傳遞給子狀態,因爲在明確聲明的路由定義中,您需要'selecteduser'參數。 –

+0

我在我的地址欄中輸入:http:// localhost:50556 /#/ systemadmin/edit/TestUser。在父母控制器中需要做些什麼來傳遞給孩子? – LRFalk01