亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vue 應用程序獲取 API 數據,對象似乎加載到我的模板中,但文本沒有出現

Vue 應用程序獲取 API 數據,對象似乎加載到我的模板中,但文本沒有出現

MMTTMM 2023-03-03 09:35:39
我創建了一個 Vue 應用程序,它從我的 Django REST API 獲取數據并將其顯示在頁面上。數據包含類似于 {'name': Whitney Portal, 'parent': Inyo National Forest', 'camp_id': 232123} 的對象列表我有一個輸入字段,用戶可以在其中輸入文本,Vue 應用程序將動態顯示包含輸入文本的所有對象。應用程序似乎正在將對象加載到模板中,但沒有顯示所需的文本。我想顯示營地屬性,例如每個對象的名稱。我附上了一個隨機字符串“我在這里!” 在生成的每個對象的 html 中,所以我可以看到在任何時候顯示了多少個對象。然而,這是為每個對象顯示的唯一文本。當我在輸入字段中鍵入內容時,對象的數量(以及“我在這里!”的實例)會發生變化。對象按預期響應(我知道要在框中鍵入什么文本才能只顯示一個對象)。例如,如果我輸入“Inyo”,則只剩下一個對象(因為我的數據庫中只有一個對象將“Inyo 國家森林”作為父屬性。如果未輸入任何內容,則顯示的對象數量與數據庫中的數量相匹配。當我查看開發人員工具 > 網絡時,我看到發出了一個成功的 API GET 請求,并且我在響應中看到了所有數據。我在控制臺中沒有收到任何錯誤。有沒有其他人遇到過這個問題并解決了它?我正在使用 Django、Django REST Framework 和 Vue JSVue應用程序const App = new Vue({    el: '#show-camps',    data() {        return {            campgrounds: [],            search: '',            test: 'test',        };    },    async created() {        const response = await fetch('http://localhost:8000/api/campgrounds/');        this.campgrounds = await response.json();    },    methods: {    },    computed: {        filteredCamps: function(){            return this.campgrounds.filter((camp) => {                return camp.parent.match(this.search);            });        }    }})我的模板<!DOCTYPE html>{% extends 'base/base.html' %}{% load static %}{% block title %}Campground List{% endblock %}{% block content %}<div class="container-fluid">    <div class="row justify-content-center">        <div class="head col-12 col-sm-10 col-md-7 text-center solid">            <h1>List of all campgrounds</h1>            <p>Here is a list of some campground IDs that I've collected.</p>            <hr>        </div>    </div >
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

問題是 Vue 和 Django 都使用相同的mustache 模板語法來顯示變量,所以你所有的{{ camp.name }}位都試圖顯示服務器端變量。

正確解決這個問題的方法是告訴 Django 不要使用標簽處理verbatim標簽

{% verbatim %}

<div id="show-camps">

  <!-- all your Vue template code goes here -->

</div>

{% endverbatim %}

另一種選擇是使用delimiters選項配置 Vue。例如


const App = new Vue({

  el: '#show-camps',

  delimiters: ["[[", "]]"],

  // etc

})

然后在您的 HTML 模板中


<div>

  [[ camp.name ]]

  [[ camp.camp_id ]]

  [[ camp.parent ]]

</div>


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號