Emberjs在循环中创建许多记录或createRecord

时间:2014-10-23 05:41:27

标签: javascript ember.js ember-data

所以我遇到了一些复杂的余烬问题,我似乎无法在任何地方找到答案,虽然这可能会得到很晚的回答,但希望它有助于某人。

此情况的用例

我正在创建一个产品,在这个产品中它有一个属于它的图像。它也有标题和描述。但更独特的是它有很多这种T恤的变化,它有小号,中号和大号,每种变化都有自己的数量和价格。 因此,在创建产品时,我必须创建产品字段,图像字段和许多变体!最多3个确切的。然后当我提交表格时,控制器处理所有3种变化和表格。

这就是我做的。在我运行验证功能

之后
$('.variation').manageSize('destroy');//Grabs array in localstorage containing the objects
    function create(){
                console.log('Create the product now');
                 var product = prop.store.createRecord('product', {
                    name: $("input[name='name']").val(),
                    color: null,
                    description:$("textarea[name='description']").val(),
                    createdAt:''
                });
                var base64 = $('.cropper').cropper("getDataURL");
                var image = prop.store.createRecord('image',{
                    imgSrc:base64.attr('src')   
                });
                var variation;
                for(var i = 0; i < variationCheck.length; i++) {
                console.log(variationCheck.length);
                    window[variation+i] = prop.store.createRecord('variation',{
                        size: variationCheck[i].size,
                        quantity: variationCheck[i].quantity,
                        price: variationCheck[i].price,
                        shippingPrice: variationCheck[i].shipping
                    }); 
                    window[variation+i].save();
                }   


            // Save the new model

                image.save();
                product.save();
                $('.variation').manageSize('destroy');
    }
},

我得到一个错误可能是因为这根本不起作用 未捕获的TypeError:无法分配给[object global]的只读属性“NaN” 但我想,即使有错误的代码,我也无法在一个控制器中多次在createRecord上找到任何内容。甚至如何正确创建记录并反映它在模型中的外观。

产品型号

Ember.Product = DS.Model.extend({
shop: DS.belongsTo('store'),
name: DS.attr('string'),
color: DS.attr('string'),
description: DS.attr('string'),
images: DS.hasMany('image', {embedded: 'always'}),
token: DS.hasMany('token', {embedded: 'always'}),
variations: DS.hasMany('variation', {embedded: 'always'}),
productCategory: DS.belongsTo('productCategory'),
likes: DS.hasMany('like',{embedded: 'always'}),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date'),
publishedAt: DS.attr('date'),
postDate: DS.attr('date'),
postCounter: DS.attr('number'),
published: DS.attr('boolean')
});

1 个答案:

答案 0 :(得分:0)

这里可能存在多个错误,但错误:

未捕获的TypeError:无法分配给只读属性&#39; NaN&#39; [object global]

问题是你做了

var variation;
for(var i = 0; i < variationCheck.length; i++) {
    window[variation+i] = ...

变化未定义,因此变体+ i是NaN,因此您尝试重复分配给窗口[NaN]。