コントローラーで URL の一部を使用できるようにしたいのですが、この場合は URL に基づいてボディ クラスを設定できるようにしたいのですが、サービスを使用して json ファイルから他の情報を取得したいと考えています。そのURL。
forループ内で console.log を使用して $scope.pageDetail.id の内容を確認すると、正しい応答が得られますが、 forループの外では「未定義」が返されます。ページのリロードではすべてが機能しますが、ページのナビゲーションを使用して URL をクリックすると機能しません。
私のコントローラー:
oddproto.controller('UrlController', function($scope, $location, PageService){
// Get page id from URL
var pageId = $location.path().replace("/", "");
$scope.pageDetail = PageService.query(function(data) {
// Get the correct page details from the dataset
for (var i = 0; i < data.length; i++) {
if (data[i].id === pageId) {
$scope.pageDetail = data[i];
break;
}
}
});
})
私のサービス
oddproto.factory('PageService', function($resource) {
return $resource('includes/pages.json');
});
pages.json
[
{
"id": "blog",
"name": "Blogg"
},
{
"id": "cases",
"name": "Projekt"
},
{
"id": "contact",
"name": "Kontakt"
}
]
また、サービスなしでこれを完全に実行しようとしました。
$scope.pageDetail = $location.path().replace("/", "");
しかし、それはページの読み込みでも機能するだけなので、ここでは $location が問題のようです。他に何が使えるかわかりませんが。