2016-07-15 13 views
0

私は初心者のバックエンド開発者です。私はいくつかの反応機能を追加することを任されています。次のコードは、 "未定義のプロパティ '1'を設定できません"という例外を生成します。最初の要素はid:1で、名前は ""です。私は文字列をハードコーディングしようとしたので、空の文字列は私の問題とは何の関係もないと思います。同じ例外が出ます。JavaScriptは未定義のプロパティを設定できません

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 [ 'ID']とpayment_code [ '名前']がnullまたはundefinedではないので、私は本当にエラーを理解していません。ログステートメントはこれを確認します。超基本的な質問については申し訳ありませんが、私はかなり広範囲に問題を探ってきましたが、このエラーは絶対に意味がありません。同じクラスにも同様の機能があり、すべて機能します。しかし、他のメソッドはconst配列を使用しており、dbから自分の値を引き出す必要があります。

+3

私は 'displayChoices'が定義されている場所について/ – Meroje

+2

ちょうどあなたの丸太の下、displayChoices.payment_code'が実際に定義されていないものです'と思いますか? – 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のようになり、より意味をなさないでしょう。あなたのコードをもっと見ることなく、わからない。

関連する問題