如何使用旧版javascript库作为Angular服务的作用域依赖项?

时间:2014-07-24 14:29:05

标签: angularjs angularjs-scope angularjs-service legacy-code

具体来说,我正在使用~800行SCORM API包装程序库,它有助于与LMS进行通信。作者没有在Angular中写它。遗留的vanilla js文件(index.js)已经包含在其中,我包括两个片段,以便了解这里使用的结构。

SCORM = {                                           //Define the SCORM object
    version:    null,                               //Store SCORM version.
    handleCompletionStatus: true,                   //Whether or not the wrapper should automatically handle the initial completion status
    handleExitMode: true,                           //Whether or not the wrapper should automatically handle the exit mode
    API:        { handle: null,
                  isFound: false }                  //Create API child object


};
SCORM.API.get = function(){ //implementation};
SCORM.API.set = function(){ //implementation};

除此之外,还有一个在全球范围内执行的遗留javascript文件。

index.js

var scorm = SCORM;
var interval;
var channel;
function init(){
  scorm.version 
}
function get(params){
    var values;
    values = getFromLMS(params); 
    return values;
}
function set(param, value){
    return scorm.set(param, value);
    return callSucceeded;
}

我正在Angular中编写一个绿地应用程序,但我想在我的架构中利用一些现有的外部库。我真的想暴露index.js'作为Angular服务的功能,无需完全重写它。

如果我要给你上面提到的两个javascript文件和一个具有以下结构的新services.js文件

'use strict';

var learnerServices = angular.module('learnerServices', []);

learnerServices.factory('learner-service' [
    function(){

        });
    }
]);

你将如何注入" get"和"设置"函数从index.js到学习者服务的$范围?

1 个答案:

答案 0 :(得分:1)

希望我能正确地解释你的问题......

'use strict';
 var learnerServices = angular.module('learnerServices', []);

 learnerServices.factory('scormService' [
   function() {

    var scorm = SCORM;
    var interval;
    var channel;
    function init(){
      scorm.version 
    }
    function get(params){
      var values;
      values = getFromLMS(params); 
      return values;
    }
    function set(param, value){
      return scorm.set(param, value);
      return callSucceeded;
    }

   return  {
     scorm: scorm,
     interval: interval,
     channel: channel,
     init: init,
     get: get,
     set: set
   }
  });
]);

learnerServices.factory('learnerService' ['scormService'
  function(scormService){
    scormService.get('some param');
  });

]);