我如何创建一个有角度的1.x"插件"?

时间:2016-11-29 14:04:33

标签: javascript angularjs

我希望为角度1.5创建我自己的pluginmodule,如$http

示例:" angular-own-plugin.js":

angular.module('ownPlugin', function() {
    $scope.functionA = function () {return 1;};
    $scope.functionB = function () {return 2;};
    $scope.functionC = function () {return 3;};
    $scope.functionX = function (n) {return n * $scope.functionA();};
})

示例:"整合" $ownPlugin

.controller('MyCtrl', function ($http, $ownPlugin){
    $scope.number = $ownPlugin.functionX(10);
})

什么是创建插件的最佳方式?我不知道是否使用factoryservice或其他方法。

由于

1 个答案:

答案 0 :(得分:1)

假设您将其称为插件,因为您希望在AngularJs应用程序中的任何位置使用独立模块。因此,AngularJs按模块工作,因此最好的方法是使用模块。

(function () {    
    angular.module('owl', [])
        .factory('$ownPlugin', function() {
            var plugin = {};

            plugin.functionA = function () {return 1;};
            plugin.functionB = function () {return 2;};
            plugin.functionC = function () {return 3;};
            plugin.functionX = function (n) {return n * plugin.functionA();};

            return plugin;
        });    
})();

因此,您可以通过将其注入模块声明来在您的应用上使用它。

(function () {    
    angular.module('myApp', ['owl'])
        .controller('MyCtrl', function ($http, $ownPlugin){
            $scope.number = $ownPlugin.functionX(10);
        });
})();
  

关于使用工厂或服务的说明:它没有太大区别,您可以将它用于设计决策,工厂使用构建函数作为吸气剂(即{{1但是服务使用构建函数作为构造函数(即myFactory = MyFactoryFn();