我希望能够在控制器中使用部分 URL,在这种情况下能够基于 URL 设置主体类,但我还想使用服务从基于 json 文件中获取其他信息那个网址。
如果我使用 console.log 来检查 $scope.pageDetail.id 中的内容以及for循环,我会得到正确的响应,但它会在for循环之外返回“未定义” 。一切都在页面重新加载时起作用,但当我使用页面的导航点击我的网址时,一切正常。
我的控制器:
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 是这里的问题。我不知道我还能用什么。