我是Angular的新手,目前正在尝试从url中获取项目的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;
});
我知道我缺少了一些东西,我如何将$routeProvider中的ProjectId存储在变量ProjectId中?
谢谢!
这里缺少一些东西来实现这一点。第一个是在你的"ProjectController"中,你需要注入$routeParams变量,使控制器定义
.controller('ProjectController', function($scope, ProjectFactory, $routeParams) {
$scope.content = ProjectFactory.async();
})
现在您可以访问$routeParams对象中的ProjectId
var pid = $routeParams.ProjectId
现在您可以将pid作为参数传递到工厂中
ProjectFactory.async(pid)
我还没有测试过,但我想这就是你所缺少的。
您需要将$routParams服务注入您的工厂并访问它,如下所示:
var projectId = $routeParams.ProjectId;
将$routeParams
对象注入控制器,并使用$routeParams.ProjectId
更多信息请点击此处:https://docs.angularjs.org/api/ngRoute/service/$route