我发现了一个javascript库“https://github.com/jvail/spatiasql.js”,我希望将其用于角度。我知道我可以将它包含在我的标题中的脚本名称中,但我希望能够将它注入我的角度模块以从控制器访问它。我相信这样做我需要从这个javascript库中获得一个自定义的角度指令,对吗?如果是这样,我该如何做到这一点?
答案 0 :(得分:2)
最简单的方法是创建一个返回库命名空间对象的工厂,例如:
(function() {
angular
.module("myModule")
.factory("sql", SqlFactory);
SqlFactory.$inject = ['$window'];
function SqlFactory($window) {
return $window.spatiasql;
}
})();
然后你可以注射它:
(function() {
angular
.module("myModule")
.service("someService", SomeService);
SomeService.$inject = ["sql"];
function SomeService(sql) {
var db = new sql.DataBase();
}
})();
答案 1 :(得分:0)
无需注入它以便在控制器中访问它的功能。您可以从控制器中调用它的方法。
答案 2 :(得分:0)
注射不是角度构造。它是控制设计模式反演的一种实现。它是现代面向对象设计的基础之一。它的目的是使单元测试成为可能。它导致代码没有紧密耦合。 DI允许您编写接口而不是实现。