2017-08-02 32 views
0

我有一個根和一個子組件。我試圖使用從父母到孩子的道具傳遞數據。我可以看到我的組件有accountTypes但id不顯示。雖然將數據從父項傳遞給了子項,但它通過但未獲取更新

的對象結構是這樣的:

var obj = { 
     1 : [ "a", "z", "k", "m" ] 
     2 : [ "a", "b", "c", "d" ] 
} 

而在我的主要的應用程序,

var app = new Vue({ 

el: '#root', 

data: { 
    accountTypes : {}, 
}, 



methods : { 
    // selecting & pushing 
    accountTypeSelected(clientIndex, formName, action) { 
     if (action == 'add') { 
      this.pushValue(clientIndex, formName) 
     } else { 
      this.removeFromArray(clientIndex, formName) 
     } 
    }, 

// And these are what I use for push and delete: 
    pushValue(key, value) { 
     var obj = this.accountTypes 

     if (obj.hasOwnProperty(key)) { 
      var idx = $.inArray(value, obj[key]); 
      if (idx == -1) { 
       obj[key].push(value); 
      } 
     } else { 
      obj[key] = [value]; 
     } 
    }, 

    removeFromArray(key, val) { 
     var idx = $.inArray(val, this.accountTypes[key]); 
     if (idx != -1) { 
      this.accountTypes[key].splice(idx, 1); 
     } 
    } 
} 
+0

1:{「a」,「z」,「k」,「m」} ???不是數組? 1:[「a」,「z」,「k」,「m」],沒有鍵/值對,所以數組 –

+0

你在'v-bind'中有問題。 它應該是'<我的組分 V-綁定:accountTypes = 'accountTypes'> ' 參見: https://vuejs.org/v2/guide/syntax.html#v - 綁定 - 速記 –

+0

對不起。他們是陣列。另外,對'v-bind:'的類型感到抱歉。現在解決它們,但事實並非如此。感謝您指出 – senty

回答

0

您從accountTypes初始化accounts,但初始化是一次性的事情。更新accountTypes將不會重新初始化accounts

如果您希望孩子與父母保持同步,那麼您應該擺脫accounts並僅使用accountTypes

+0

我也試過。我嘗試在元素中設置'props:['accountTypes'],'在我的組件中和'''。在調試器中,我可以看到成功更新了我的組件中的帳戶類型值,事實上for循環似乎不起作用。 accountTypes [0]中的' – senty

+0

'accountTypes'不是數組。有沒有什麼方法可以製作片段或小提琴,以顯示問題以及您期望它做什麼,而不是做什麼? –

+0

https://jsfiddle.net/50wL7mdz/51201/ - 在這裏,我準備了一個小提琴。如果你在循環中使用一個數字,但不是我的對象,那麼它是有效的:(預期的行爲是它返回每個數組的值以及它們的鍵值,所以對於所有的a,b,c,e,b,g來說, ,並且我想能夠知道他們的密鑰,就像'(val,key,accountTypes中的索引)' – senty

相關問題