かなり初心者の質問だと思いますが、自分自身を理解できません。 初期値でオブジェクトを1回起動することができる角度サービスを作成するのに苦労しています。そして、他のコントローラがこのインスタンスを使用できるようになります。 現在、ゲッター/セッターは機能していません。さらに、オブジェクトが作成される前にcontroller2が呼び出されています。新しいインスタンスで角度サービスを宣言する
このサービスを適切な方法で書くべきですか?
ページ(ベース)コントローラ:
vm.user = userService.createNewUser(data); /// init with data
サブページController1:
vm.user.userInfo = userService.getUserInfo(); /// getter
サブページコントローラ2:
userService.setUserInfo(data); /// setter
サービス:
(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;
}
};
}
})();
オブジェクトが作成される前にgetUserInfoが呼び出されているようです(createNewUser)。これをどうすればコントロールできますか? – badigard
ベストは、vm.user = userService.createNewUser(data)です。 /// init。angular.runブロック内のデータ。すべてのコントローラの前に一度だけ実行されます。 – Walfrat
がこれをチェックします。 Thanks – badigard