当前位置: 首页 > 知识库问答 >
问题:

服务和工厂之间的差异[重复]

韩阳云
2023-03-14

我们如何将下面的代码转换为工厂而不是服务

在这两个方面,工厂和服务的更好实施方式是什么,请提出建议。我是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>

共有2个答案

孟翰海
2023-03-14
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);
                    }

                }]);

这里是答案感谢支持

法烨烨
2023-03-14
  • 都是单例
  • 他们在书写模式方面有所不同
  • 我的人事选择是使用服务
 类似资料:
  • 我注意到以下代码在netbeans中是完全合法的: 然而eclipse对此并不满意,我必须这样初始化它: 有趣的是netbean建议不要在初始化部分指定类型参数,而是使用菱形运算符??我想知道这两种方法之间的区别。以及应该使用哪一种,这样代码就可以在不同的IDE中使用而不会有任何变化。

  • 这肯定不是REST,因为它不是无状态的。它考虑到cookies并有自己的会话。 是RPC吗?RPC和REST有什么区别?

  • 我想知道更多处理数组的numpy。我发现a[:,None]和a[:,]之间是不同的。我想深入研究何时何地使用它们。 我试图以特殊的方式解决从2d数组中减去1d的问题,就像numpy-subtract-add-1d-array-from-2d-array一样,我意识到a[:,None]和a[:,]是不同的。 有人能给我关于它的官方或具体参考吗?我真的会很感激你的!

  • 编辑2016年1月:因为这仍然得到关注。自从问了这个问题后,我已经完成了一些AngularJS项目,对于那些我主要使用的项目,构建了一个对象,并在最后返回了该对象。然而,我下面的陈述仍然是正确的。 编辑:我想我终于明白了两者之间的主要区别,我有一个代码示例来演示。我亦认为这项质询与拟议的重复质询有所不同。副本中说服务是不可实例化的,但如果您按照我在下面演示的方式进行设置,它实际上是可实例化的。可以

  • 发送表单数据时使用命令名称和模型属性有什么区别? 和 我应该在哪个时间点使用它们中的任何一个?

  • 可能重复: 何时使用LinkedList 我应该什么时候使用arrayList,什么时候使用LinkedList? 什么时候应该使用,和?