我正在尝试实现一个经典的列表/详细信息用户界面。单击列表中的某个项目时,我想显示该项目的编辑表单同时仍然显示列表。我正在尝试解决 Angular 的每页 1 个视图的限制,并决定通过将所有 URL 路由到同一控制器/视图来实现此目的。 (也许这是我问题的根源,我愿意接受替代方案。)
Routing:
$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 开发人员所抱怨的那样,能够拥有多个显示视图!),但这会导致同样的失去范围的问题。
尝试使用 ui-router:http://github.com/angular-ui/ui-router http://github.com/angular-ui/ui-router.
它们具有嵌套视图,并且比角度默认路由更容易状态管理:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)