我正在使用工厂返回数组的2个元素。在我的控制器中,我填充第3个元素并使用'unshift'将其添加到第一个位置。
我的问题是关于以下情况。工厂是一个单独的,并且将始终在数组中包含2个元素,但是当我刷新控制器并将断点放在调用工厂的'vm.contacts'时,它显示3个元素,而我总是期望它具有初始状态2个元素。
function settingsController($scope, $rootScope, $timeout, settingsFactory) {
var vm = this;
vm.contacts=[];
init();
function init() {
var primaryContact = {
"order": 1,
"id" : $rootScope.app.user.id,
"firstName": $rootScope.app.user.firstName,
"lastName": $rootScope.app.user.lastName,
"phone": $rootScope.app.user.phone,
"isActive": true
}
vm.contacts = settingsFactory.getContacts();
vm.contacts.unshift(primaryContact);
}
}
function settingsFactory() {
var _service, contacts;
contacts = [
{
"order": 2,
"id" : "1001",
"firstName": "",
"lastName":"",
"phone":"",
"isActive": false
},
{
"order": 3,
"id" : "1002",
"firstName": "",
"lastName":"",
"phone":"",
"isActive": false
}
];
_service = {
getContacts: getContacts,
getContact: getContact,
addContact: addContact,
updateContact: updateContact
};
return _service;
function getContacts() {
return contacts;
}
function updateContact(contactId, info) {
for(var i in contacts) {
if(contacts[i].id === contactId) {
contacts[i].firstName = info.firstName;
contacts[i].middleName = info.middleName;
contacts[i].lastName = info.lastName;
contacts[i].phone = info.phone;
contacts[i].isActive = true;
break;
}
}
}
}