2016-07-15 185 views
0

我是新手后端开发人员,我一直负责添加一些反应功能,而且我完全没有深度。以下代码会生成异常“无法设置未定义的属性'1'”。第一个元素是id:1和name:“”。我不认为空字符串与我的问题有任何关系,尽管我已经试过硬编码一个字符串,并且得到相同的异常。JavaScript无法设置undefined的属性

payment_code: { 
    label: 'Payment Code', 
    value: 'payment_code', 
    choices: adminSalesStore.paymentCodes.map((payment_code) => { 
     console.log(payment_code); 
     console.log(payment_code['id']); 
     console.log(payment_code['name']); 
     displayChoices.payment_code[payment_code['id']] = payment_code['name']; 
     return { 
      label: payment_code['id'], 
      value: payment_code['name'] 
     } 
    }), 
    type: 'choice' 
}, 

我真的不明白的错误,因为payment_code [“身份证”]和payment_code [“名”]不为空或未定义。日志报表证实了这一点。对于超级基本问题抱歉,但我已经广泛地搜索了这个问题,并且这个错误仍然毫无意义。在同一个班上有类似的功能,他们都工作。然而,其他方法使用常量数组,我需要从数据库拉我的值。

+3

我想'displayChoices.payment_code'是什么确切定义,仅低于你的日志 – Meroje

+2

如何/在哪里是'displayChoices'定义? – Timo

回答

1

我猜你显示属性是分配给displayChoices的一部分,即它是这样的:

displayChoices = { 
    ... 
    payment_code: { 
     label: "Payment Code", 
     value: 'payment_code', 
     choices: adminSalesStore.paymentCodes.map((payment_code) => { 
      console.log(payment_code); 
      console.log(payment_code['id']); 
      console.log(payment_code['name']); 
      displayChoices.payment_code[payment_code['id']] = payment_code['name']; 
      return { 
       label: payment_code['id'], 
       value: payment_code['name'] 
      } 
     }), 
     type: 'choice' 
    }, 
    ... 
}; 

的问题是,直到这个语句完成,没有displayChoices.payment_code属性,这样你就可以分配给displayChoices.payment_code[anything]

完成第一个作业后,您应该完成该作业。

displayChoices = { 
    ... 
    payment_code: { 
     label: "Payment Code", 
     value: 'payment_code', 
     type: 'choice' 
    }, 
    ... 
}; 

displayChoices.choices = adminSalesStore.paymentCodes.map((payment_code) => { 
    console.log(payment_code); 
    console.log(payment_code['id']); 
    console.log(payment_code['name']); 
    displayChoices.payment_code[payment_code['id']] = payment_code['name']; 
    return { 
     label: payment_code['id'], 
     value: payment_code['name'] 
    } 
}), 
0

它看起来像是displayChoices.payment_code那是未定义的。 displayChoices已定义,或者它会抱怨为此设置付款代码,因此在运行此代码块之前,我会定义displayChoices.payment_code = []{}(具体取决于您要进行的操作)。或者您可能正在寻找displayChoices.paymentCodes,这将更像您之前选择的adminSalesStore.paymentCodes,并且对我更有意义。不知道没有看到更多的代码。