【发布时间】:2015-09-21 04:10:33
【问题描述】:
我有一个控制器,旨在支持某个模型的所有 CRUD 操作:显示记录列表、显示记录的详细信息、编辑、创建、更新和删除。
使用同一个控制器呈现不同的视图 - 但对于每个视图,需要不同的初始化:对于列表,我应该加载一页记录,对于详细信息视图 - 我将按 ID 加载。
在初始化时获取控制器“状态”的最佳做法是什么。
这是我正在使用的几条路线的示例:
function config($routeProvider, $locationProvider) {
$routeProvider
// ...
.when('/activity/list', {
controller: 'ActivityController',
templateUrl: 'views/activityList.html',
controllerAs: 'vm'
})
.when('/activity/create', {
controller: 'ActivityController',
templateUrl: 'views/createNewActivity.html',
controllerAs: 'vm'
})
.when('/activity/:id', {
controller: 'ActivityController',
templateUrl: 'views/activity.html',
controllerAs: 'vm'
})
.otherwise({ redirectTo: '/login' });
}
对于补丁 - 我通过检查路径明确区分。我猜这不是角度的最佳实践。
if ($location.$$path == '/activity/list') {
initList();
}
【问题讨论】:
-
可以在路由配置对象中设置其他属性并通过
$route.current检查它们或使用resolve在控制器中注入变量 -
还有哪些属性? $routeProvider.when 的文档似乎没有相应的属性。我错过了什么? docs.angularjs.org/api/ngRoute/provider/$routeProvider
-
hmm...我知道您曾经能够在这些对象上设置属性...。现在您似乎不能,但仍然可以使用
resolve。好久没用ngroute一直用ui-router -
由于对这个简单问题缺乏活动,以及您(charliefl)的回答 - 您是否建议 AngularJS 导航的行业标准是 ui-route 而不是本机 angularJS $routeProvider ?
-
答案可能是肯定的,因为它更加健壮和灵活,并且支持嵌套视图和父状态。角度路由器刚刚进行了重大升级,但新路由器不像您使用的那样
ngroute
标签: angularjs