【问题标题】:AngularJS Store $routeParam in var in factory serviceAngularJS在工厂服务的var中存储$routeParam
【发布时间】:2014-11-30 21:32:09
【问题描述】:

我是 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 中?

谢谢!

【问题讨论】:

    标签: javascript angularjs url routes config


    【解决方案1】:

    这里缺少一些东西来让它工作。第一个是在你的“ProjectController”中,你需要注入 $routeParams 变量来定义控制器

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

    现在您可以访问 $routeParams 对象中的 ProjectId

    var pid = $routeParams.ProjectId
    

    现在您可以将 pid 作为参数传递给工厂

    ProjectFactory.async(pid)
    

    我还没有对此进行测试,但我认为这就是你所缺少的。

    【讨论】:

      【解决方案2】:

      您需要将 $routParams 服务注入您的工厂并像这样访问它:

      var projectId = $routeParams.ProjectId;
      

      【讨论】:

        【解决方案3】:

        $routeParams对象注入控制器,并使用$routeParams.ProjectId

        更多信息在这里:https://docs.angularjs.org/api/ngRoute/service/$route

        【讨论】:

        猜你喜欢
        • 2023-04-06
        • 2013-02-19
        • 2013-04-20
        • 2015-11-25
        • 2023-03-08
        • 1970-01-01
        • 2014-04-25
        • 2014-05-02
        • 2015-07-22
        相关资源
        最近更新 更多