0

これが私のAngularアプリの外観です。

(function () {
"use strict";

angular
    .module("app")
    .controller("custCtrl", custCtrl);

custCtrl.$inject = ['dataService','custFactory'];

/* @ngInject */
function custCtrl(dataService, custFactory) {
    var vm = this;
    //line##
    vm.customer= custFactory.Create('customer');

    GetCustomers();
    function GetCustomers() {

        dataService.read().then(function (data) {
                vm.customer = data.fields;
            }
        });

    }

    return vm;
}
})();

工場方式

(function () {
'use strict';

angular
    .module('app.factory')
    .factory('custFactory', custFactory);

custFactory.$inject = ['$q'];

/* @ngInject */
function custFactory($q) {
    var _create = function (type) {

        var obj = {};

        switch (type.toString().toLowerCase()) {
            case "customer":
                obj = new Customer();
                break;
            default:
                obj = null;
        }

        return obj;
    }

    return {
        Create: _create
    };
}
})();

モデルを見る

 function Customer()
 {

var dto = this;

dto.Customer = {
  "Name" : "",
  "Gender" : "", // & so on
}

 return dto;
}

上記custCtrlの //line## を確認すると、ファクトリ メソッドを呼び出して、以下のように顧客オブジェクトをインスタンス化しています。

vm.customer= custFactory.Create('customer');

ただし、顧客の VM とファクトリを作成せず、以下のように空の文字列を単純に割り当てるとします。

        vm.customer= {};

それでも問題なく動作しています。

では、なぜ VM とファクトリを作成する必要があるのでしょうか?? その利点は何ですか??

4

2 に答える 2