वर्तमान में मैं एक कोणीय समस्या के साथ फंस गया हूं। निम्नलिखित परिदृश्य:

मेरे पास एक गेम इकाई और एक टीम इकाई है। एक गेम में कई टीम ऑब्जेक्ट हो सकते हैं। (कई-कई संबंध)

मेरे फ्रंटएंड एप्लिकेशन में मैं वैकल्पिक टीमों के साथ एक नया गेम जोड़ना चाहता हूं। टीमों के लिए मैंने दो ड्रॉपडाउन-मेनू (एक टीम के लिए प्रत्येक मेनू) का उपयोग करने का निर्णय लिया।

अब मैं एनजी-मॉडल को सही मान नहीं दे पा रहा हूं।

मैंने ऐसा कुछ करने की कोशिश की लेकिन यह गलत हो सकता है:

<select class="form-control" ng-options="team.teamname for team in teams 
track by team.id" ng-model="game.teams[0]">
  <option value="" selected>-- No Team --</option>
</select>

<select class="form-control" ng-options="team.teamname for team in teams 
track by team.id" ng-model="game.teams[1]">
  <option value="" selected>-- No Team --</option>
</select>

जैसे ही मैं सेव बटन पर क्लिक करता हूं, मुझे एक त्रुटि संदेश मिलता है "400: JSON को संसाधित करने में असमर्थ":

Possibly unhandled rejection: {"data":{"code":400,"message":"Unable to process JSON"},"status":400,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","data":{"teams":{"0":{"id":1,"games":[{"id":1,"date":20180810}],"teamname":"BVB"},"1":{"id":2,"games":[{"id":1,"date":20180810}],"teamname":"FCB"}},"date":"20180810"},"url":"/api/games","headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=utf-8"}},"statusText":"Bad Request"}

पोस्टमैन के साथ गेम के लिए दो टीमें बनाते समय यह काम करता है:

{
    "date": 20180810,
    "teams": [{"id": 1}, {"id": 2}]
}

आउटपुट:

{
  "id": 1,
  "date": 20180810,
  "teams": [
      {
          "id": 1,
          "games": [
              {
                  "id": 1,
                  "date": 20180810
              }
          ],
          "teamname": "BVB"
      },
      {
          "id": 2,
          "games": [
              {
                  "id": 1,
                  "date": 20180810
              }
          ],
          "teamname": "FCB"
      }
  ]
}

कोई सुझाव कैसे पहले और दूसरे ड्रॉपडाउन मेनू के मूल्यों के साथ एनजी-मॉडल (गेम) सेट करने के लिए? धन्यवाद

मैंने फ़ॉर्म का एक स्क्रीनशॉट जोड़ा है जो मुझे चाहिए: यहां छवि विवरण दर्ज करें

1
dokukaefer 29 अगस्त 2017, 11:09

2 जवाब

सबसे बढ़िया उत्तर

अगर मैं अच्छी तरह समझता हूं, जब आप डाकिया के साथ अनुरोध करते हैं, तो आप इसे भेजते हैं:

{
    "date": 20180810,
    "teams": [{"id": 1}, {"id": 2}]
}

लेकिन आपका कोणीय रूप वास्तव में इसे भेज रहा है:

{
    "date": "20180810"
    "teams": {
        "0": {
            "id": 1,
            "games": [
                {
                    "id": 1,
                    "date": 20180810
                }
            ],
            "teamname": "BVB"
        },
        "1": {
            "id": 2,
            "games": [
                {
                    "id": 1,
                    "date": 20180810
                }
            ],
            "teamname": "FCB"
        }
    }
}

जबकि date ठीक दिखता है, आपका teams एक वस्तु है लेकिन आपका बैकएंड एक सरणी की अपेक्षा कर रहा है। आपकी टीम में अतिरिक्त जानकारी भी है (जैसे games और teamname, लेकिन मुझे नहीं पता कि यह आपके बैकएंड के लिए एक समस्या है या नहीं।

अधिकांश समय एंगुलरज के साथ इस तरह की समस्याएं एचटीएमएल टेम्पलेट में नहीं बल्कि नियंत्रक में होती हैं। आपके नियंत्रक में आपके पास ऐसा कुछ होना चाहिए:

scope.game = {
    date: 'something',
    teams: []
};

मुझे लगता है कि आपकी समस्या यह है कि आप scope.game.teams को सरणी के रूप में ठीक से प्रारंभ नहीं करते हैं। तो ng-model बस इसे किसी वस्तु के साथ अपने आप में अंकित करें।

1
Magus 29 अगस्त 2017, 11:43

मैं जो इकट्ठा करता हूं उससे आप प्रत्येक गेम के लिए कई टीमों को जोड़ना चाहते हैं, चेकलिस्ट मॉडल का पालन करें, शायद यह वही है जो आप चाहते हैं, https://vitalets.github.io/checklist-model/ वहां से आप सर्वर को प्रत्येक टीम के लिए गेम की एक सूची पास कर सकते हैं

0
AlexanderDrysdale 29 अगस्त 2017, 11:19