我的AngularJS
应用程序有一个item list
视图(基本上是用户可以从中选择的一大列项目)和一个item detail
视图。我目前设置的路线如下:
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: 'partials/index',
controller: indexCtrl
}).
when('/itemDetail/:id', {
templateUrl: 'partials/itemDetail',
controller: itemDetailCtrl
}).
otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
}]);
function itemDetailCtrl($scope, $http, $routeParams) {
$http.get('/api/post/' + $routeParams.id).
success(function(data) {
$scope.post = data.post;
});
}
对于itemDetail/:id
路线,我希望这里有多个 :id 的选项(例如 '/:id1+:id2+:id3')。如果用户选择一个项目、两个项目或更多项目,系统应该可以工作。
我还无法开始工作的可能解决方案:
- 当用户选择多个项目时,我的应用程序会
id
在数组中记录这些项目的唯一性 - 当进入详细视图时,路由变成
'itemDetail/STRING
whereSTRING
is a string,由id
数组中的所有 s 组成,+
它们之间有 a。例如:itemDetail/item1+item2+item3
- 在
itemDetailCtrl
中,我取字符串,在符号处拆分它+
并创建一个新数组,如前所述 - 然后我使用 an
ng-repeat
来获取这些ids
信息并将我的数据库中的详细信息加载到我的视图中。
这是我想到的第一个解决方案,但它似乎相当费力且不是特别优雅。有没有更好的方法来实现这一点,如果是这样,我如何更新 itemDetailCtrl 以反映多个 id?