Inhaltsverzeichnis
Warum ist die ID in VUE3 eindeutig, aber gleichzeitig wird die Eingabe angezeigt?
Subcomponent -Code
Übergeordnete Komponentencode
Heim Web-Frontend js-Tutorial Wie kann ich sicherstellen, dass nur die aktuelle Nachricht das Feld bearbeiten, wenn Sie auf eine andere Nachricht klicken?

Wie kann ich sicherstellen, dass nur die aktuelle Nachricht das Feld bearbeiten, wenn Sie auf eine andere Nachricht klicken?

Apr 04, 2025 pm 04:51 PM
vue git 工具 ai 点击事件 Warum

Warum ist die ID in VUE3 eindeutig, aber gleichzeitig wird die Eingabe angezeigt?

Bei der Verwendung von VUE3 zur Entwicklung von Chat -Datenaufzeichnungsbearbeitungsfunktionen haben wir ein Problem gestoßen: Obwohl die ID jeder Nachricht eindeutig ist, werden jedes Mal, wenn eine andere Nachricht für die Bearbeitung geklickt wird, alle bearbeiteten Nachrichten angezeigt, anstatt nur die aktuell geklickte Nachricht, in der das Feld Bearbeitungsfeld angezeigt wird. Diese Frage ist für mich sehr verwirrend, weil ich dafür gesorgt habe, dass die MEG_ID für jede Nachricht unabhängig ist und dass das MEG_ID beim Klicken auch korrekt erhalten wird.

Das Problem wird wie folgt beschrieben: Was ich erreichen möchte, ist, dass beim Klicken auf die erste Nachricht zum Bearbeiten, beim Klicken auf die zweite Nachricht das Bearbeitungsfeld der ersten Nachricht geschlossen werden sollte und nur das Bearbeitungsfeld der zweiten Nachricht angezeigt werden sollte, um einen gegenseitig ausschließlichen Effekt zu erzielen.

Das Folgende ist der spezifische Implementierungsprozess:

Subcomponent -Code

 
<div class="chat-container" v-if="props.dialogdata.showeditContent && Änderungsgid">
    <div class="chat-input-box">
        <div class="top-boxes" v-loading="contentloading">
            <el-input ref="textInput" id="Chat-Input" autosize v-model="editContent" type="textarea" placeholder="$ T ('text_send_to') />
        </div>
    </div>
    <div class = " eingabe-tipps>
        ESC-Schlüssel <span class="pub-color"> abbrechen </span> · Taste eingeben <span class="pub-color"> speichern </span>
    </el-input>
</div>
</div>
<div v-else: class="['dc-chat-content', props.dialogdata.author.bot? 'DC-Chat-Bot-Content': '']">
    
    <el-popover placement="right" : sactible="ToolsVisible" offset="1" show-arrow="false" popper-class="benutzerdefinierter popper" teleported="false">
        <div v-if="! props.dialogdata.Checked" class="more">
            <el-button-gruppen>
                <el-tooltip v-for="item in Menuitems" : key="item.id" effect="dark" content="item.title" placement="top">
                    <el-button: icon="item.icon" size="small" : dentabled="item.id === '2' && (userInfo.username!
                </el-tooltip>
            </el-Button-Gruppen>
        </div>
        <!-andere Codes weglassen->

Der Skriptteil der untergeordneten Komponente:

 const props = DefineProps <dcdialogItemProps> ()
const emit = defineEemits <{
  (Ereignis: 'Menuclick', Wert: String, Element: Objekt): void
}> ()
constmenuitems = [
  {
    ID: '1',
    Symbol: 'fertig',,
    Titel: $ T ('text_multiple_choice')
  },
  {
    ID: '2',
    Symbol: " bearbeiten titel: t id: ikone: men verhalten klicken sie auf ereignis const editcontent="ref" changesgid="ref" trortlediting="ref" verwendet um zu markieren ob das formular handleselect="(val:" string> {
  if (val === '1') {
    props.dialogdata.Checked = true
  } else if (val === '2') {
    console.log ('-HandleSelect --- 2', props.dialogdata);
    props.dialogdata.isediting = true
    Currentiting.Value = false
    editContent.Value = props.dialogdata.content
    Änderungensgid.Value = props.dialogdata.msg_id
  }
  Emit ('Menuclick', Val, props.dialogdata)
}<h4 id="Übergeordnete-Komponentencode"> Übergeordnete Komponentencode</h4>
<pre class="brush:php;toolbar:false"> <dcdialogitem v-for="Element in Messagelist" class="Pulldown-List-Element" : key="item.msg_id" dialogdaten="Element" id="'msg' item.msg_id"></dcdialogitem>
Nach dem Login kopieren

Das Datenformat der Messagelist ist wie folgt:

 [
    {
        "msg_id": "1276491426334769232",
        "Inhalt": "Oh, laut",
        "überprüft": Falsch
    },
    {
        "MSG_ID": "1276493284222701702",
        "Inhalt": "Asdasdaasdsadasd",
        "überprüft": Falsch
    },
    ... weggelassen]
Nach dem Login kopieren

Der Skriptteil der übergeordneten Komponente:

 const handlemenuclick = (val: string, dialogdata: any) => {
  if (val === '1') {
    messagelist.value.foreach ((item) => {
      item.Conted = true
    })
    showRecords.value = true
    showReplymmsg.Value = false
    dialogData.showeditContent = false
  } else if (val === '2') {
    showReplymmsg.Value = false
    ReplyAuthor.Value = '' '
    showRecords.value = false
    dialogData.showeditContent = true
  } else if (val === '3') {
    showReplymmsg.Value = true
    dialogData.showeditContent = false
    ReplyAuthor.Value = DialogData.Author.username
    ReplyContent.Value = DialogData.Content
  }
}
Nach dem Login kopieren

Um dieses Problem zu lösen, ist das erste, was zu verstehen ist, dass die Eigenschaft mit ShowIntent in der übergeordneten Komponente eingestellt ist. Wenn eine Nachricht angeklickt wird, setzt die Handlemenuklick -Funktion die Meldung der Nachricht auf true. Dies schließt das Bearbeitungsfeld jedoch nicht für andere Nachrichten.

Um sich gegenseitig ausschließende Effekte zu erzielen, müssen wir den vorgeschriebenen Teil aller anderen Nachrichten auf false festlegen, wenn Sie auf eine neue Nachricht zur Bearbeitung klicken. Sie können die Handlemenuklick -Funktion der übergeordneten Komponente ändern, wie unten gezeigt:

 const handlemenuclick = (val: string, dialogdata: any) => {
  if (val === '1') {
    messagelist.value.foreach ((item) => {
      item.Conted = true
      item.showeditContent = false
    })
    showRecords.value = true
    showReplymmsg.Value = false
  } else if (val === '2') {
    messagelist.value.foreach ((item) => {
      item.showeditContent = false
    })
    showReplymmsg.Value = false
    ReplyAuthor.Value = '' '
    showRecords.value = false
    dialogData.showeditContent = true
  } else if (val === '3') {
    messagelist.value.foreach ((item) => {
      item.showeditContent = false
    })
    showReplymmsg.Value = true
    ReplyAuthor.Value = DialogData.Author.username
    ReplyContent.Value = DialogData.Content
  }
}
Nach dem Login kopieren

Durch die oben genannten Änderungen wird jedes Mal, wenn eine neue Nachricht zum Bearbeiten geklickt wird, das Bearbeitungsfeld anderer Nachrichten geschlossen, wodurch ein gegenseitig ausschließender Effekt erzielt wird. Obwohl die ID eindeutig ist, zeigt das Eingabefeld nur das Bearbeitungsfeld der aktuell geklickten Nachricht an, wie wir es erwarten.

Das obige ist der detaillierte Inhalt vonWie kann ich sicherstellen, dass nur die aktuelle Nachricht das Feld bearbeiten, wenn Sie auf eine andere Nachricht klicken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1664
14
PHP-Tutorial
1266
29
C#-Tutorial
1239
24
Wie zuverlässig ist Binance Plaza? Wie zuverlässig ist Binance Plaza? May 07, 2025 pm 07:18 PM

Binance Square ist eine von Binance Exchange bereitgestellte Social -Media -Plattform, die den Benutzern einen Platz zur Kommunikation und den Austausch von Informationen zu Kryptowährungen bietet. In diesem Artikel werden die Funktionen, Zuverlässigkeit und Benutzererfahrung von Binance Plaza im Detail untersucht, um diese Plattform besser zu verstehen.

2025 Binance Binance Exchange Neuestes Login -Portal 2025 Binance Binance Exchange Neuestes Login -Portal May 07, 2025 pm 07:03 PM

Als weltweit führender Kryptowährungsaustausch ist Binance immer dazu verpflichtet, Benutzern ein sicheres und bequemes Handelserlebnis zu bieten. Im Laufe der Zeit hat Binance seine Plattformfunktionen und die Benutzeroberfläche kontinuierlich optimiert, um die sich ändernden Bedürfnisse der Benutzer gerecht zu werden. Im Jahr 2025 startete Binance ein neues Login -Portal, das darauf abzielt, die Benutzererfahrung weiter zu verbessern.

So retten Sie Binances Liquidation So retten Sie Binances Liquidation May 07, 2025 pm 07:09 PM

Beim Handel mit Kryptowährung ist die Liquidation üblich, aber Kopfschmerzen. Insbesondere bei der Verwendung großer Handelsplattformen wie Binance können Benutzer aufgrund gewalttätiger Marktschwankungen das Risiko haben, ihre Positionen zu verlieren. In diesem Artikel wird detailliert erläutert, wie Binance nach der Liquidation des Bestands sowie einige vorbeugende Maßnahmen retten kann.

Das neueste Download -Tutorial für Ouyi OKX6.118.0 Version Das neueste Download -Tutorial für Ouyi OKX6.118.0 Version May 07, 2025 pm 06:51 PM

Das neueste Download -Tutorial für Ouyi OKX6.118.0 Version: 1. Klicken Sie im Artikel auf den Schnelllink; 2. Klicken Sie auf den Download (wenn Sie ein Webbenutzer sind, registrieren Sie die Informationen zuerst). Die neueste Android -Version V6.118.0 optimiert einige Funktionen und Erfahrungen, um den Handel zu erleichtern. Aktualisieren Sie die App jetzt, um eine extremere Handelserfahrung zu erleben.

2025 Binance Online -Webadresse 2025 Binance Online -Webadresse May 07, 2025 pm 06:54 PM

Als weltweit führender Kryptowährungsaustausch ist Binance immer dazu verpflichtet, Benutzern ein sicheres und bequemes Handelserlebnis zu bieten. Im Laufe der Zeit hat Binance seine Plattformfunktionen und die Benutzeroberfläche kontinuierlich optimiert, um die sich ändernden Bedürfnisse der Benutzer gerecht zu werden. Im Jahr 2025 startete Binance ein neues Login -Portal, das darauf abzielt, die Benutzererfahrung weiter zu verbessern.

2025 Binance Neueste Adresse 2025 Binance Neueste Adresse May 07, 2025 pm 06:57 PM

Als weltweit führender Kryptowährungsaustausch ist Binance immer dazu verpflichtet, Benutzern ein sicheres und bequemes Handelserlebnis zu bieten. Im Laufe der Zeit hat Binance seine Plattformfunktionen und die Benutzeroberfläche kontinuierlich optimiert, um die sich ändernden Bedürfnisse der Benutzer gerecht zu werden. Im Jahr 2025 startete Binance ein neues Login -Portal, das darauf abzielt, die Benutzererfahrung weiter zu verbessern.

Was ist der anfängliche Ausstellungspreis von XRP Was ist der anfängliche Ausstellungspreis von XRP May 07, 2025 pm 03:06 PM

Der anfängliche Ausstellungspreis von XRP beträgt 0,005 USD, der am 1. April 2012 festgelegt ist und darauf abzielt, mehr Benutzer und Investoren für die Teilnahme an seinem Ökosystem zu gewinnen.

10 neueste Tools für Webentwickler 10 neueste Tools für Webentwickler May 07, 2025 pm 04:48 PM

Web Development Design ist ein vielversprechendes Karrierefeld. Diese Branche steht jedoch auch vor vielen Herausforderungen. Da sich mehr Unternehmen und Marken auf den Online -Markt wenden, haben Webentwickler die Möglichkeit, ihre Fähigkeiten zu demonstrieren und ihre Karriere erfolgreich zu machen. Da die Nachfrage nach Webentwicklung weiter wächst, nimmt auch die Zahl der Entwickler zu, was zu einem immer heftigen Wettbewerb führt. Aber es ist aufregend, dass Sie, wenn Sie über das Talent und den Willen verfügen, immer neue Möglichkeiten finden, einzigartige Designs und Ideen zu erstellen. Als Webentwickler müssen Sie möglicherweise weiter nach neuen Tools und Ressourcen suchen. Diese neuen Tools und Ressourcen machen Ihren Job nicht nur bequemer, sondern verbessern auch die Qualität Ihrer Arbeit, wodurch Sie mehr Unternehmen und Kunden gewinnen können. Die Trends der Webentwicklung ändern sich ständig.

See all articles