อุปกรณ์ประกอบฉากการพึ่งพาซึ่งกันและกันใน VueJS

ฉันต้องการเพิ่มการพึ่งพาการเชื่อมโยงระหว่างอุปกรณ์ประกอบฉากของฉันในองค์ประกอบ VueJS ของฉัน

ตัวอย่างเช่น ในส่วนประกอบของฉันในการประกาศอุปกรณ์ประกอบฉาก ฉันต้องการกำหนดว่าหากมีอุปกรณ์ประกอบฉากอยู่ ก็ควรจะต้องมีอีกอันหนึ่ง แต่ไม่จำเป็นเลยหากไม่มีอุปกรณ์ประกอบฉากก่อนหน้านี้

props: {
    url: {
      type: String,
      required: true,
    },
    isShared: {
      type: Boolean,
      default: false,
    },
    isSharedByOtherMember: {
      type: Boolean,
      default: false,
    },
    archivedId: {
      type: String,
      required: isSharedByOtherMember ? true : false, // This is not working, bit is there a way to do so ?
    },

หลังจากอ่าน เอกสาร vuejs :

โปรดทราบว่าอุปกรณ์ประกอบฉากได้รับการตรวจสอบก่อนที่จะสร้างอินสแตนซ์ส่วนประกอบ ดังนั้นคุณสมบัติของอินสแตนซ์ (เช่น ข้อมูล การคำนวณ ฯลฯ) จะไม่สามารถใช้ได้ภายในฟังก์ชันเริ่มต้นหรือเครื่องมือตรวจสอบความถูกต้อง

มีวิธีใดที่จะทำเช่นนี้ในการประกาศอุปกรณ์ประกอบฉากเพื่อให้อ่าน/เข้าใจได้ดีขึ้นหลังจาก ?

ขอบคุณล่วงหน้า


person foufrix    schedule 13.07.2020    source แหล่งที่มา
comment
ฉันขอแนะนำให้ใช้ค่าเริ่มต้นสำหรับแต่ละเสาที่ต้องพึ่งพา   -  person AndrewShmig    schedule 13.07.2020


คำตอบ (1)


คุณสามารถใช้คุณสมบัติตัวตรวจสอบความถูกต้องสำหรับเสา

เอกสาร Vue มีตัวอย่างนี้: (https://vuejs.org/v2/guide/components-props.html#Prop-Validation)

// Custom validator function
propF: {
  validator: function (value) {
    // The value must match one of these strings
    return ['success', 'warning', 'danger'].indexOf(value) !== -1
  }
}

คุณสามารถกำหนดวิธีการตรวจสอบได้ในส่วนวิธีการของ Vue

บางสิ่งเช่นนี้:

export default {
  props: {
    isSharedByOtherMember: {
      type: Boolean,
      default: false
    },
    archivedId: {
      type: String,
      default: null,
      required: false,
      validator: this.validateArchiveId(),
      errorMessage: 'Archived ID required when isSharedByOtherMember has value of true.'
    }
  },
  methods: {
    validateArchiveId () {
      return this.isSharedByOtherMember
    }
  }
}
person Olli Lappalainen    schedule 13.07.2020