2017-01-03 83 views
1

我使用VueJs來製作動態網格結構。如何在VueJs中動態添加一組配置的模板?

這種握法需要一定的一套類似的configs的,

var sets = { 
      "nb": 3, 
      "column": 4, 
      "list": false, 
      "action_text": "Action 0", 
     }; 

    var templates = [{ 
      "nb": 2, 
      "column": 3, 
      "list": false, 
      "action_text": "Action 0", 
     }, 
     { 
      "nb": 1, 
      "column": 2, 
      "list": false, 
      "action_text": "Action 0", 
     }]; 

我對模板VueJs是,

Vue.component('campaign_segment', { 
    template: '#segment_body', 
    props: ['t_nb', 't_column', 't_show_list', 't_action_text'], 

    data: function() { 
     return { 
      n: templates, 
      nb: this.t_nb, 
      column: this.t_column 
      } 
     } 
    } 

我的模板骨架,

<div v-for="(te,index) in templates" class="row"> 
    <campaign_segment :t_nb="te.nb" :t_column=te.column :t_show_list="te.list" 
         :t_action_text="te.action_text"> 
    </campaign_segment> 
    </div> 

在這裏,如果我嘗試像這樣,

var k = 3; 

    <div v-for="n in k class="row"> 
    <p> {{ n }} </p> 
    </div> 

我得到的輸出,

 1 
    2 

如果我增加 「K」 的價值,它的動態反映。

在我的情況下,我需要將一組配置傳遞給現有的列表。

的OnLoad,已定義列表中工作正常,但如果我嘗試注入(推或追加),那麼它將無法工作。

我試試,

templates[2] = dummy_segment; 
    console.log(templates); 

輸出是,

Object { 0: Getter, 1: Getter, 2: Object, 1 more… } 

在這裏,新添加的對象是從現有的完全不同。

兩者都是對象。

我需要對象的純追加。

處理好模板後,現有的設置顯示爲「Getter」爲什麼?

我的代碼有什麼問題?

是否有可能(通過只添加配置集)?

+1

要回答你的getter問題,我相信這是如何完成反應性的,每個對象都是作爲一個具有監視變化方法的類來創建的。如果你不想看到getter,setter,但你真的不需要,你可以做一個object.assign。另外,在API文檔中記錄了一個記錄方法,它顯示沒有getter/setters的對象,我相信它。$ log – vbranden

+0

感謝您的回覆,我會檢查它。 –

回答

1

如果你的templates變量不是vue實例的一部分,改變它對vue代碼沒有任何影響,它不會被動。

Here是數組上的突變方法,它將觸發vue實例變量的變化檢測。

  • 推()
  • 彈出()
  • 移()
  • 不印字()
  • 剪接()
  • 排序()
  • 反向()
+0

如果我使用「.push()」,那麼我得到的響應是'push()不是函數'。 另外我的問題是追加一個新的對象作爲一個元素在現有的對象。但在那裏,動態鏈接將不起作用。所以我嘗試進行虛擬推送。最後我得到了一個解決方案,發佈綁定對象。最初,我使用循環的核心對象。在通過Vue變量使用對象之後。現在它的工作很好。謝謝@沙拉布。 –