Ich denke, es ist eine ziemlich neue Frage, aber ich kann es selbst nicht herausfinden. Ich habe Schwierigkeiten, einen eckigen Dienst zu erstellen, der es mir erlaubt, ein Objekt einmal mit den Anfangswerten zu initiieren, und dann könnten andere Controller diese Instanz verwenden. Momentan funktionieren der Getter/Setter nicht. Außerdem wird controller2 aufgerufen, bevor das Objekt erstellt wird.Deklarieren von Angular Service mit neuer Instanz
Wie soll ich diesen Service richtig schreiben?
Seite (Basis) Controller:
vm.user = userService.createNewUser(data); /// init with data
Sub Seite Controller1:
vm.user.userInfo = userService.getUserInfo(); /// getter
Sub Seite Controller2:
userService.setUserInfo(data); /// setter
Service:
(function() {
'use strict';
angular
.module('app.user')
.factory('userService', userService);
function userService() {
return {
createNewUser: function (data) { /// init only once
return new User(data);
},
getUserInfo: function() {
return User.getUserInfo();
},
setUserInfo: function (customer) {
return User.setUserInfo(customer);
}
};
function User(data) { /// ctor
this.XXXX = {
user_code: data.customer.user_code,
user_password: data.customer.user_password
};
this.YYYY = {
//// some vars
}
User.prototype = {
getXXXXUserInfo: function() {
return this.XXXX;
},
setXXXXUserInfo: function (customer) {
this.XXXX.user_code = customer.user_code;
this.XXXX.user_password = customer.user_password;
}
};
}
})();
Es scheint, dass getUserInfo aufgerufen wird, bevor Objekt erstellt wird (createNewUser). Wie kontrolliere ich das? – badigard
Am besten wäre es, vm.user = userService.createNewUser (data) zu haben; /// init mit Daten in einem angular.run-Block. winkel wird nur einmal und vor jedem Controller ausgeführt. – Walfrat
wird dies überprüfen. Danke – badigard