在angularJS中向数组添加另一个变量

时间:2017-05-30 21:24:56

标签: javascript angularjs web-deployment

所以即时编辑一些代码,我想将另一个变量添加到数组中。以下代码完美运行:

submit.addAttributeValue = function() {
    var aValue = submit.status.newAttributeValue;
    var aType = submit.status.selectedAttributeType;
    console.log('adding value', aValue, aType)
    if(aValue && aType ) {
        submit.ProductMeta['attributes'][aType][aValue] = true;
    };
};
然后我将变量aPrice添加到函数中:

submit.addAttributeValue = function() {
    var aValue = submit.status.newAttributeValue;
    var aType = submit.status.selectedAttributeType;
    var aPrice = submit.status.newAttributePrice;
    console.log('adding value', aValue, aType, aPrice)
    if(aValue && aType ) {
        submit.ProductMeta['attributes'][aType][aValue][aPrice] = true;
    };
};

我收到错误:

Error: submit.ProductMeta.attributes[aType][aValue] is undefined submit.addAttributeValue@http://dubdelivery.com/js/controllers-submit.js:369:13

ProductMeta定义为:submit.ProductMeta = {};

关于我应如何处理此问题的任何建议?

谢谢!

2 个答案:

答案 0 :(得分:3)

您的数组为空,因此您无法在第一个

之前设置第二级字段

如果你有

var obj = {};

你必须设置

obj.firstItem

obj.firstItem.secondItem

这是example

答案 1 :(得分:0)

查看调试器或只是控制台记录" aType"," aValue"和" aPrice"。我打赌" aValue"未定义。

如果您要以这种方式操作对象属性,则必须确保包含属性名称的变量实际上具有值。

(顺便说一句,特别是现在使用ES6类,你可能不应该以这种方式操纵对象属性/值)。