控制器是否应该拨打服务或工厂?

这个问题在这里已经有了答案:

  • angular.service vs angular.factory 9个答案

  • 如果对象定义语法更可取,请使用factory

    app.factory('factory', function () {
        ...
        return {
            value: '...'
        };
    });
    

    或者由于某种原因返回不是对象的东西。

    如果this语法更可取,请使用service

    app.service('service', function () {
        this.value = '...';
    });
    

    或者它应该返回与创建的对象new从另一个构造函数,如

    app.factory('factory', function () {
        return new someConstructor();
    });
    

    app.service('service', someConstructor);
    

    一个好的service用例是,您可以使用controllerAs语法无缝地重构现有控制器以继承常规服务,在这种情况下,不需要替换this语句,如下所示:

    app.service('parentControllerService', function () {
        this.value = '...';
    });
    
    app.controller('MainController', function (parentControllerService) {
        angular.extend(this, parentControllerService);
    });
    
    app.controller('ChildController', function (parentControllerService) {
        angular.extend(this, parentControllerService);
        this.value = '!!!';
    });
    
    链接地址: http://www.djcxy.com/p/77887.html

    上一篇: Should a controller call a service or factory?

    下一篇: what's the difference between factory and service?