私の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')。ユーザーが 1 つ、2 つ、またはそれ以上のアイテムを選択すると、システムは機能するはずです。
私がうまくいかなかった可能性のある解決策:
- ユーザーが複数のアイテムを選択すると、アプリはアイテムの一意
id
を配列に記録します - 詳細ビューに移動すると、ルートは、配列内のすべての から作成された文字列であり
'itemDetail/STRING
、それらの間に があります。例えば:STRING
id
+
itemDetail/item1+item2+item3
- では、以前と
itemDetailCtrl
同様に、文字列を取得し、記号で分割して+
新しい配列を作成します。 - 次に、 を使用し
ng-repeat
てそれらを取得ids
し、データベースから詳細をビューに読み込みます。
これは頭に浮かんだ最初の解決策でしたが、非常に面倒で特に洗練されていないようです。これを達成するためのより良い方法はありますか?もしそうなら、複数のIDを反映するようにitemDetailCtrlを更新するにはどうすればよいですか?