หากมีการพิมพ์ค่าเดียวกันบนคอนโซลก่อนที่จะเรียกใช้ axios ทำไมค่าอื่นจึงถูกส่งไปยังเซิร์ฟเวอร์

ฉันมีฟิลด์แบบฟอร์มที่มีการเติมข้อความอัตโนมัติทั่วไปดังต่อไปนี้:

      <generic-autocomplete
        v-model='c.heuristicId'
        v-on:change='heuristicSelected(i, $event)'
        label='Fuente de datos'
        :apiFunction='heuristicsFetchFunction'
        :disabled='disabled'/>

เมื่อบันทึกแบบฟอร์มและส่งด้วยฟิลด์นี้ในช่องว่าง heuristicIdgets ส่งเป็น nullซึ่งเป็นสิ่งที่ต้องการ

อย่างไรก็ตาม เมื่อเลือกค่าจากการเติมข้อความอัตโนมัติทั่วไปแล้วลบออก heuristicIdgets จะถูกส่งไปพร้อมกับ id ของค่าที่เลือกไว้ก่อนหน้านี้

ภายในฟังก์ชันที่เรียก axios ฉันกำลังบันทึก console.log("heuristicId to be sent: " + campaign.heuristicId);และ undefinedgets เข้าสู่ระบบในทั้งสองสถานการณ์

แก้ไข: หลังจากสอบถามเพิ่มเติมอีกเล็กน้อย ฉันเชื่อว่าข้อผิดพลาดอาจอยู่ในคุณสมบัติการคำนวณอย่างใดอย่างหนึ่งของ <generic-autocomplete/>:

  isValid: function () {
    // this checks that the name in display equals the object selected in
    // memory so no invalid labels are displayed while a valid object is 'selected'
    let vc = this
    let result = false
    if (vc.object) {
      result = vc.objectName === vc.object.name
      console.log('generic-autocomplete#isValid', result)
    }
    return result
  } 

ค่าว่าง vc.objectจะส่งคืน falseresult และฉันไม่สามารถจัดการสิ่งนั้นได้อย่างน่าพอใจ


person Esteban Vargas    schedule 04.04.2018    source แหล่งที่มา
comment
คุณสามารถอัปโหลดรหัสของคุณที่ไหนสักแห่งได้ไหม? และคุณยังสามารถลบรหัสที่ไม่เกี่ยวข้องออกจากคำถามของคุณ เพื่อให้ผู้คนได้รับส่วนที่ผิดได้ดีขึ้น   -  person Asqan    schedule 05.04.2018
comment
@Asqan โปรดตรวจสอบการแก้ไขใหม่ ขอบคุณ   -  person Esteban Vargas    schedule 05.04.2018


คำตอบ (1)


หลังจากบันทึกโฟลว์การควบคุมที่ซับซ้อนมาก ในที่สุดฉันก็มาถึงจุดที่รู้ว่าคุณสมบัติใดที่ฉันต้องกลายพันธุ์ อย่างไรก็ตาม ปรากฎว่าคุณสมบัติอินไลน์ที่กลายพันธุ์ใน Vue 2 ถือเป็นการต่อต้านรูปแบบ ความสามารถในการเปลี่ยนอุปกรณ์ประกอบฉากแบบอินไลน์เลิกใช้แล้วจาก Vue เวอร์ชันก่อนหน้า เพื่อให้สอดคล้องกับกระบวนทัศน์ที่มีการตอบสนองอย่างเต็มที่ของไลบรารี สิ่งที่เกิดขึ้นคือหากคุณพยายามเปลี่ยนคุณสมบัติอินไลน์ เมื่อส่วนประกอบแสดงผลอีกครั้ง คุณสมบัติดังกล่าวจะถูกตั้งค่ากลับเป็นค่าเริ่มต้น (หรือก่อนหน้า)

ซึ่งแก้ไขได้โดยการเพิ่มคุณสมบัติที่คำนวณซึ่งเป็นสำเนาจากคุณสมบัติที่คุณต้องการกลายพันธุ์

//Somewhere else in the code the property is defined
property: null

//Add the computed property
data: function () {
    return {
      mutableProperty: this.property,
    }
}
person Esteban Vargas    schedule 16.04.2018