0

我是 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 等依赖项。

4

2 回答 2

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;
    }];
})
于 2013-08-06T13:33:08.290 回答
0

我不知道延迟加载,但是,如果延迟加载有效,那么标准的注入方法可能有效

service = ['serviceName', '$rootScope','$q', function($rootScope, $q){
   return {
     a: 1, b:2
   }
}]
于 2013-08-05T08:27:00.673 回答