我想實現一個經典的列表/細節UI。點擊列表中的項目時,我想顯示該項目的編輯表格,同時仍顯示列表。我正在嘗試解決Angular的1-view-per-page限制,並決定將所有URL路由到同一個控制器/視圖。 (也許這是我的問題的根源,我接受的替代品。)AngularJS:多個視圖與路由而不丟失範圍
路由:
$routeProvider
.when('/list', { templateUrl: '/Partials/Users.html', controller: UserController })
.when('/edit/:UserId', { templateUrl: '/Partials/Users.html', controller: UserController })
.otherwise({ redirectTo: '/list' });
視圖(/Partials/Users.html):
<!-- List of users -->
<div ng-repeat="user in Users">
<a href="*/edit/{{ user.Id }}">Edit {{ user.Name }}</a>
</div>
<!-- Edit form -->
<div>
{{ SelectedUser.Name }}
</div>
控制器:
function UserController($scope, $routeParams) {
// the model for the list
$scope.Users = GetUserListFromService();
// the model for the edit form
if ($routeParams.UserId != null)
$scope.SelectedUser = GetUserFromService($routeParams.UserId);
}
問題:
- 單擊編輯鏈接時,控制器將重新實例化一個新範圍,因此必須重新啓動「用戶」列表。 (在一個更復雜的例子中,我可以從用戶的輸入存儲綁定到模型,這也會丟失。)我寧願保留範圍從以前的路線。我傾向於使用單獨的控制器(或者像許多其他Angular開發人員所抱怨的那樣,具有多個顯示視圖的能力!),但這會導致丟失範圍的相同問題。
可能重複的[Angularjs,路由之間的範圍](http://stackoverflow.com/questions/13882077/angularjs-passing-scope-between-routes) –