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

Emberjs Create many records or createRecord in a loop

本文关键字:记录 createRecord 创建 循环 Emberjs      更新时间:2023-09-26

所以我遇到了一些复杂的ember问题,我似乎在任何地方都找不到答案,尽管这可能会很晚得到答案,但希望它能帮助到别人。

这种情况的用例

我正在创建一个产品,在这个产品里面有一个属于它的图像。它还有标题和描述。但更独特的是,这款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');
    }
},

我得到了一个错误,可能是因为这根本不应该起作用未捕获的类型错误:无法分配给[对象全局]的只读属性"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')
});

这里可能有不止一个错误,但对于错误:

未捕获的类型错误:无法分配给[对象全局]的只读属性"NaN"

问题是你做

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

variation是未定义的,所以variation+i是NaN,所以您试图重复分配给window[NaN]。