在Angular中使用自定义Javascript库

时间:2015-11-05 19:02:00

标签: angularjs cordova angularjs-directive

我发现了一个javascript库“https://github.com/jvail/spatiasql.js”,我希望将其用于角度。我知道我可以将它包含在我的标题中的脚本名称中,但我希望能够将它注入我的角度模块以从控制器访问它。我相信这样做我需要从这个javascript库中获得一个自定义的角度指令,对吗?如果是这样,我该如何做到这一点?

3 个答案:

答案 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允许您编写接口而不是实现。