AngularJS:在$ provide时注入依赖项

时间:2013-08-05 08:18:10

标签: javascript angularjs requirejs angular-services

我是AngularJS的新手。我正在尝试在salesforce CRM plarform中开发单页面应用程序。我想按需加载依赖项,即仅当用户单击特定链接时。我也通过使用https://github.com/matys84pl/angularjs-requirejs-lazy-controllers

实现了这一目标

以上链接仅包含指令的示例。我在相同的路由配置文件中添加了服务和过滤器。

function registerServices(service) {    
  if(service) {
    if (!$provide){ throw new Error("Error: $setProvide is not set!"); }
    $provide.value(service[0], service[1]);
  } else {
    $provide.value = null; 
  }
}

我正在注册上述服务,可以用作

service = ['serviceName', function(){
   return {
     a: 1, b:2
   }
}]

一切都运行良好,但我的疑问是,如何在上面的代码中注入依赖项如$ q,$ rootScope等。

2 个答案:

答案 0 :(得分:0)

我不知道延迟加载但是,如果延迟加载工作,则标准注射方法可能有效

service = ['serviceName', '$rootScope','$q', function($rootScope, $q){
   return {
     a: 1, b:2
   }
}]

答案 1 :(得分:0)

我有解决这个问题的方法,我不确定方法是否合适。

<强>控制器

var controller = function($scope, customService){
   $scope.name = "hello world";
   customService($q, $rootScope).then(function(data){ 
      console.log(data);
      /*Received data can be manipulated*/ 
   });
}

<强>服务

'use strict';
define(function () {
    return ['customService', function($q, $rootScope){
        var deferred = $q.defer();
        /*Your code*/
        return deferred.promise;
    }];
})