2017-08-03 62 views
0

這是我的Vue如何在vuejs v-for draggable list中渲染瓶子jinja2對象?

<div class="drag"> 
     <h2>List 1 Draggable</h2> 
     <draggable id="cat1" v-model="list" :move="checkMove" class="dragArea" :options="{group:'people'}"> 
      <div v-for="element in list">${ element.name }</div> 
     </draggable> 
     <h2>List 2 Draggable</h2> 
     <draggable id="cat2" v-model="list2" :move="checkMove" class="dragArea" :options="{group:'people'}"> 
      <div v-for="element in list2">${ element.name }</div> 
      <p>another</p> 
     </draggable> 
    </div> 
    <script> 

     var vm = new Vue({ 
      el: "#main", 
      delimiters:['${', '}'], 
      data: { 
       list: [{ 
        name: "John" 
       }, { 
        name: "Joao" 
       }, { 
        name: "Jean" 
       }], 
       list2: [{ 
        name: "Juan" 
       }, { 
        name: "Edgard" 
       }, { 
        name: "Johnson" 
       }] 
      } 

      } 
     </script> 

This works great。列表中的數據正確顯示並且可拖動。現在我想將下列字典傳遞給燒瓶中的數據對象,以便我可以渲染它。

對象時只用{{ data }}看起來像渲染:

{u'uncategorized': [{'name': u''}, {'name': u'first'}, {'name': u'another'}]} 

所以你可以看到其對相同的格式對象被傳遞到數據:

{ 
        list: [{ 
         name: "John" 
        }, { 
         name: "Joao" 
        }, { 
         name: "Jean" 
        }], 
        list2: [{ 
         name: "Juan" 
        }, { 
         name: "Edgard" 
        }, { 
         name: "Johnson" 
        }] 
       } 

但是當我嘗試只是在vue中代替data: {{ data }},它不能正確渲染。

那麼我需要做什麼才能讓瓶中的數據對象讓Vue「接受」它呢?

回答

0

首先,像這樣的組件渲染數據通常是不好的做法。最好的選擇是從api獲取數據以獲得更好的分離效果,但是如果您確實需要在模板中呈現數據,則應該將其呈現在自定義屬性中而不是組件內,例如您正在使用:option

現在到實際的問題。你正試圖將一個Python字典渲染成一個json格式的地方,這顯然不會奏效。您必須先將其轉換爲json,您可以使用json module

來自實例文檔拍攝應該是這樣的:

import json 
json.dumps({"c": 0, "b": 0, "a": 0}) 

請記住,你的字典的邏輯結構必須與您的預期JSON,不只是光。

+0

你能說說你說的第一件事嗎?以某種方式像axios那樣獲取數據,然後將數據附加到該數據會更好嗎? – BigBoy1337

+0

很難一概而論,但我認爲大部分時間都是更乾淨的方法,甚至認爲您需要數據的端點,而這是異步調用,會增加額外的請求。這取決於你希望你的應用程序如何異步。將數據呈現到vue組件的模板中通常不是不好的做法,只需將它添加到應用程序的源代碼中即可。如果你使用vue-api來實現它(例如使用自定義屬性來傳遞來自外部模板的數據),除了更高的耦合之外,沒有太多的反駁。 –

+0

在這種情況下,這只是一半的權利。 Flask/Jinja有插入JSON數據的特定機制。看到重複。 – davidism