javascript – AngularJS和JQuery $.each()函数只返回最后一个循环值

前端之家收集整理的这篇文章主要介绍了javascript – AngularJS和JQuery $.each()函数只返回最后一个循环值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直在使用AngularJS并在我的项目中集成了JQuery库.

我正在使用JQuery的$.each()函数来遍历我的类.
我想从中创建一个对象数组,就像下面的格式一样:

[
    {"invoice_no":"value1","brand":"value2","model":"value3"},{"invoice_no":"value1",]

HTML

JS控制器

$scope.saveData = function(){
    var arrayOFProducts = [];
    var object =  {};

    angular.element('.panels').each(function(){
            $(this).find('.form-control').each(function(){
                var key = $(this).attr('name');
                var value = $(this).val();
                object [key] = value;   
            });
            arrayOFProducts.push(object);
    });

    console.log(arrayOFProducts);

}

这里的主要问题是我为数组中的所有json对象获取相同的值.似乎只有最后一个输入值被创建为一个对象,并且它将它推送到数组5次.

最佳答案
问题是因为您需要在外循环的每次迭代后重置您追加到空状态的对象.试试这个:

$scope.saveData = function() {
    var arrayOFProducts = [];

    angular.element('.panels').each(function() {
        var obj =  {}; // note this moved to here

        $(this).find('.form-control').each(function() {
            var key = $(this).attr('name');
            var value = this.value;
            obj[key] = value;
        });
        arrayOFProducts.push(object);
    });

    console.log(arrayOFProducts);
}

猜你在找的jQuery相关文章