AngularJS范围和服务

时间:2017-09-19 16:44:38

标签: angularjs

我正在使用工厂返回数组的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;
            }
        }
    }
  }

0 个答案:

没有答案