2014-10-06 21 views
0

我是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,在變量專案編號?

謝謝!

回答

1

有幾件事情在這裏失蹤讓這個工作。第一個是你的「ProjectController」,你需要注入的$ routeParams變量使得控制器定義

.controller('ProjectController', function($scope, ProjectFactory, $routeParams) { 
    $scope.content = ProjectFactory.async(); 
}) 

現在您可以訪問專案編號在$ routeParams對象

var pid = $routeParams.ProjectId 

現在你可以通過作爲一個參數進廠pid

ProjectFactory.async(pid) 

我還沒有測試過,但我認爲這就是你所缺少的。

1

你需要注入$ routParams服務到您的工廠,並訪問它,像這樣:

var projectId = $routeParams.ProjectId; 
+1

謝謝!這解決了它! – 2014-10-06 15:34:35

1

進樣$routeParams對象到控制器,並使用$ routeParams.ProjectId

這裏更多信息:https://docs.angularjs.org/api/ngRoute/service/ $ route

+0

這個問題表明否則,因爲控制器只獲得初始化一次:http://stackoverflow.com/questions/21938163/use-routeparams-in-service – Alnitak 2015-12-16 21:43:37

相關問題