服务与工厂之间的区别



我们如何将/更改在代码下方转换为工厂而不是服务

请建议,在这两个,工厂和服务中实施的更好方法是什么。我是Angularjs的新手,所以请在此问题中帮助我

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    </head>
<body ng-app="app">

    <div ng-controller="CalculatorController">
        Enter a number:
        <input type="number" ng-model="number" />
        <button ng-click="doSquare()">X<sup>2</sup></button>
        <button ng-click="doCube()">X<sup>3</sup></button>
        <div>Answer: {{answer}}</div>
    </div>

    <script>
        var app = angular.module('app', []);
            app.service('MathService', function() {
                this.add = function(a, b) { return a + b };
                this.subtract = function(a, b) { return a - b };
                this.multiply = function(a, b) { return a * b };
                this.divide = function(a, b) { return a / b };
            });
            app.service('CalculatorService', function(MathService){
                this.square = function(a) { return MathService.multiply(a,a); };
                this.cube = function(a) { return MathService.multiply(a, MathService.multiply(a,a)); };
            });
            app.controller('CalculatorController', function($scope, CalculatorService) {
                $scope.doSquare = function() {
                    $scope.answer = CalculatorService.square($scope.number);
                }
                $scope.doCube = function() {
                    $scope.answer = CalculatorService.cube($scope.number);
                }
            });
    </script>
</body>
</html>
  • 两者都是辛格尔顿
  • 它们在写作模式方面有所不同
  • 我的人员选择是使用服务
var app = angular.module('app', []);
                app.factory('MathService', function(){
                    return {
                        multiply : function(a, b){
                            return a*b;
                        }
                    }
                });
                app.factory('CalculateResult', ['MathService', function(MathService){
                        return {
                            square : function(a){
                                return MathService.multiply(a,a);
                            },
                            cube : function(a){
                                return MathService.multiply(a, MathService.multiply(a,a));
                            }
                        }
                }]);
                app.controller('CalculatorController', ['CalculateResult', '$scope', function(CalculateResult, $scope){
                    $scope.doSquare = function(){
                        $scope.answer = CalculateResult.square($scope.number);
                    };
                    $scope.doCube = function(){
                        $scope.answer = CalculateResult.cube($scope.number);
                    }
                }]);

这是答案,感谢您的支持

最新更新