Javascript 服务中的Angularjs推送到阵列将替换以前的项

Javascript 服务中的Angularjs推送到阵列将替换以前的项,javascript,arrays,angularjs,ionic,Javascript,Arrays,Angularjs,Ionic,我正在尝试添加到home.html中的列表,并使用ionic和angularjs在myOrders.html中显示该列表 问题是,当我将一个新项推送到数组中时,以前的项会被新项替换 示例: push'one'->数组为[{'name':one'}] push'two'->数组是[{'name':'two'},{'name':'two'}]//应该是 [{'name':'one'},{'name':'two'}] push'three'->数组是[{'name':'three'},{'name':

我正在尝试添加到home.html中的列表,并使用ionic和angularjs在myOrders.html中显示该列表

问题是,当我将一个新项推送到数组中时,以前的项会被新项替换

示例:

push'one'->数组为[{'name':one'}]

push'two'->数组是[{'name':'two'},{'name':'two'}]//应该是 [{'name':'one'},{'name':'two'}]

push'three'->数组是[{'name':'three'},{'name':'three'}, {'name':'three'}]//应该是 [{'name':'one'},{'name':'two'},{'name':'three'}]

我在下面添加了代码的相关部分

home.html
(添加到列表)

controllers.js

angular.module('app.controllers', [])
...
.controller('homeCtrl', function($scope, $state, formData) {
        $scope.product = {};

        $scope.submitForm = function(product) {
            if (product.name) {
                formData.updateForm(product);
                $state.go('menu.myOrders');
            } else {
                alert("Please fill out some information for the user");
            }
        };
    })

.controller('myOrdersCtrl', function($scope, formData) {
    $scope.product = formData.getForm();
})
angular.module('app.services', [])

.service('formData', [function(){
    return {
        form: [],
        getForm: function() {
            return this.form;
        },
        updateForm: function(item) {
            this.form.push(item);
        }
    }
}]);
services.js

angular.module('app.controllers', [])
...
.controller('homeCtrl', function($scope, $state, formData) {
        $scope.product = {};

        $scope.submitForm = function(product) {
            if (product.name) {
                formData.updateForm(product);
                $state.go('menu.myOrders');
            } else {
                alert("Please fill out some information for the user");
            }
        };
    })

.controller('myOrdersCtrl', function($scope, formData) {
    $scope.product = formData.getForm();
})
angular.module('app.services', [])

.service('formData', [function(){
    return {
        form: [],
        getForm: function() {
            return this.form;
        },
        updateForm: function(item) {
            this.form.push(item);
        }
    }
}]);

您将一次又一次地将同一对象插入数组。由于对象总是通过引用传递,所以将同一对象的引用推送到数组中。更新对象时,存储在数组中的所有引用都将更改

尝试创建对象的副本,同时传递到
updateForm()


用于创建服务的语法是
工厂的语法。您不应该明确地从
服务中返回任何内容。所有的变量和方法都应该放在
this
kyeword上为您的代码样本放一个plnker
.controller('homeCtrl', function($scope, $state, formData) {
        $scope.product = {};

        $scope.submitForm = function(product) {
            if (product.name) {
                formData.updateForm(angular.copy(product));
                $state.go('menu.myOrders');
            } else {
                alert("Please fill out some information for the user");
            }
        };
    })