これが私の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 とファクトリを作成する必要があるのでしょうか?? その利点は何ですか??