0
具體來說,我正在使用一個~800行SCORM API包裝庫,以方便與LMS進行通信。作者沒有寫在Angular中。一個傳統的,香草js文件(index.js)已經被包裝在它的頂部,我包括了一個片段,以給出這裏使用的結構的概念。如何使用舊版JavaScript庫作爲Angular服務的作用域依賴項?
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;
}
我寫在角綠地的應用程序,但我想利用一些現有的外部庫在我的建築。我真的很想將index.js的功能作爲一個Angular服務公開,而不必完全重寫它。
如果我給你上面提到的兩個JavaScript文件,並且具有下列結構
'use strict';
var learnerServices = angular.module('learnerServices', []);
learnerServices.factory('learner-service' [
function(){
});
}
]);
你將如何注入新的services.js文件中的「獲取」,並從指數「設定」功能.js納入學習者服務的範圍?
也許這是最好的方式,我要去上班那到測試不久。但是,我特別想找的是一種方法,從我的angular learnerService中引用index.js中的現有代碼(即無副本/粘貼)。爲了說明另一種方式,我想創建一個角度服務作爲遺留代碼的適配器,通過將API暴露給角度範圍的上下文而不實現其內部。 –
也許我只是在想它,應該只是將遺留的內部元件複製到我的工廠中,就像您在回覆中所做的那樣。 –
是的,你可以使用工廠作爲包裝。但是你需要返回一個暴露你想從外部訪問的變量/函數的對象。 – Andrew