Voici à quoi ressemble mon application angulaire.Quand devrais-je créer une usine ou une machine virtuelle en mode angulaire?
(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;
}
})();
Méthode usine
(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
};
}
})();
Voir modèle
function Customer()
{
var dto = this;
dto.Customer = {
"Name" : "",
"Gender" : "", // & so on
}
return dto;
}
Si vous cochez mon custCtrl
ci-dessus sur // ligne ##, je fais appel méthode usine instancier objet client comme ci-dessous .
vm.customer= custFactory.Create('customer');
Mais si je ne suis pas créer un client usine VM & et assign simple, une chaîne vide comme ci-dessous.
vm.customer= {};
Toujours son fonctionnement sans problème.
Donc ma question pourquoi devrais-je créer un VM & usine ?? Quel est son avantage ?
Vous utilisez 'var vm = this;' juste pour représenter la portée de liaison et supprimer l'injection de '$ scope' dans votre contrôleur. En général, vous décorez 'vm' avec les propriétés qui doivent être liées à la vue. Je ne comprends pas pourquoi avez-vous besoin du code sur la ligne '// ligne ##' si vous remplacez ensuite le 'vm.customer' par' data.fields' dans la méthode 'GetCustomers()'. –