我是Angular的新手,我目前正试图从网址获取项目的ID,并将其作为var传递给服务。
我目前的代码如下:
app.config(
['$routeProvider',
function($routeProvider) {
...
$routeProvider.when('/project/:ProjectId', {
templateUrl: 'project.html',
controller: 'ProjectController',
activePage: 'Portfolio'
});
...
}
])
...
.controller('ProjectController', function($scope, ProjectFactory) {
$scope.content = ProjectFactory.async();
})
...
.factory('ProjectFactory', function($http) {
var factoryProject = {
async: function(page) {
var projectID = 'XXXXXX';
var apiKey = 'XXXXXX';
var url = 'http://behance.net/v2/projects/' + projectId + '?api_key=' +
apiKey + '&callback=JSON_CALLBACK';
var promise = $http.jsonp(url).error(function(response, status) {
alert(status);
}).success(function(response, status) {
console.log(response.project);
}).then(function(response, status) {
return response.data;
});
return promise;
}
};
return factoryProject;
});
我知道我错过了什么,我怎么能在$ projectProvider中存储:ProjectId,在变量projectID中?
谢谢!
答案 0 :(得分:1)
您需要将$ routParams服务注入您的工厂并按如下方式访问它:
var projectId = $routeParams.ProjectId;
答案 1 :(得分:1)
将$routeParams
对象注入控制器,并使用$ routeParams.ProjectId
此处有更多信息:https://docs.angularjs.org/api/ngRoute/service/ $ route
答案 2 :(得分:1)
这里缺少一些让这个工作的东西。第一个是你的ProjectController',你需要注入$ routeParams变量来制作控制器定义
.controller('ProjectController', function($scope, ProjectFactory, $routeParams) {
$scope.content = ProjectFactory.async();
})
现在您可以在$ routeParams对象中访问ProjectId
var pid = $routeParams.ProjectId
现在您可以将pid作为参数传递到工厂
ProjectFactory.async(pid)
我还没有对此进行测试,但我认为这一切都是你所遗漏的。