我有一個JavaScript對象,我試圖綁定到Vue視圖。Javascript對象數據綁定Vue
我正在運行一個函數來使用AJAX更新JavaScript對象,我期待Vue綁定到JS對象,並在對象更新時更新視圖,雖然沒有發生。
研究建議在Vue聲明中進行AJAX調用,但由於其他約束,我寧願不這樣做。
我已經創建了一個小提琴來說明問題是什麼,因爲它可以在沒有AJAX部分的情況下重現,也可以粘貼下面的代碼。
https://jsfiddle.net/g6u2tph7/5/
預先感謝你的時間和智慧。
感謝,
vmitchell85
的JavaScript
window.changeTheData = function(){
externalJSSystems = [{description: 'Baz'}, {description: 'Car'}];
document.getElementById("log").innerHTML = 'function has ran...';
// This doesn't update the Vue data
}
var externalJSSystems = [{description: 'Foo'}, {description: 'Bar'}];
Vue.component('systable', {
template: '#sysTable-template',
data() {
return {
systems: externalJSSystems
};
}
});
new Vue({
el: 'body'
});
HTML
<systable :systems="systems"></systable>
<button type="button" onclick="changeTheData()">Change</button>
<br><br>
<div id="log"></div>
<template id="sysTable-template">
<table>
<thead>
<tr>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr v-for="sys in systems">
<td>{{ sys.description }}</td>
</tr>
</tbody>
</table>
</template>
可以確認 - [小提琴](https://jsfiddle.net/qfxpznor/) – ShadowScripter
感謝您的回覆。這只是一個簡單的例子,我放在一起,我不知道這將如何在我的實際代碼中工作...讓我測試一下,看看它是否會工作... – vmitchell85
這確實工作,但我必須循環通過每個條目來單獨推送每個條目而不是僅使用全新的數據集更新對象 - 我也嘗試設置整個對象,然後再推入一個條目,但它仍然不更新 - 如果我找不到更好的解決方案然後我將這個標記爲答案(或者那是不好的做法?) – vmitchell85