suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Holen Sie sich zwei JSON-Werte in das Textfeld <b-form-select>

Ich verwende BootstrapVue.

Ich habe einen JSON mit der folgenden Struktur:

[
    {"ID": "123", "Name": "Harry", "Age": "22"},
    {"ID": "456", "Name": "Harry", "Age": "18"},
    {"ID": "789", "Name": "Peter", "Age": "20"},
    {"ID": "159", "Name": "Peter", "Age": "19"},
]

Um es klarzustellen: Alle Daten basieren auf NameAge 一起 - 都是唯一,也没有 ID (!). Dies ist nur ein Beispiel zum leichteren Verständnis.

Was ich jetzt versuche, ist in <b-form-select> 中显示 Name ,并在后面的括号中显示 Age . Zum Beispiel: Peter (20).

Jetzt habe ich folgenden Code:

<b-form-select :options="sortedPersons" text-field="Name" value-field="ID"></b-form-select>

Ich muss value 传递给我的 parent.vue platzieren, möchte aber Text darin anzeigen. Also habe ich beschlossen, es zu tun.

Das Einzige, was ich jetzt brauche, ist Aufmerksamkeit. Dieses Beispiel soll nur zeigen, was ich will:

:text-field="'姓名' + ' ' + '(' + '年龄' + ')'" Aber das funktioniert nicht.

Wie gelingt das?

Zusätzliche Informationen - Ich habe es vorher sortiert compulated 中运行我的 json.

sortedPersons() {
  var array = this.json.map((input) => input);
  return array.sort((a, b) => {
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
  });
},

Vielen Dank im Voraus!

P粉752826008P粉752826008246 Tage vor411

Antworte allen(1)Ich werde antworten

  • P粉659516906

    P粉6595169062024-03-27 15:07:28

    您需要映射数据,以便将所需的文本格式化为单个属性,或者使用 options 属性删除,然后使用 v-for 手动创建 <option> 标记。

    new Vue({
      el: "#app",
      data() {
        return {
          selected: '',
          options: [
              {"ID": "123", "Name": "Harry", "Age": "22"},
              {"ID": "456", "Name": "Harry", "Age": "18"},
              {"ID": "789", "Name": "Peter", "Age": "20"},
              {"ID": "159", "Name": "Peter", "Age": "19"},
          ]
        };
      }
    });
    [email protected]/dist/css/bootstrap.min.css" />
    
    
    
    
    
    Selected: {{ selected }}

    Antwort
    0
  • StornierenAntwort