我使用[email protected],[email protected],vue2-selectize。 我有一個很大的形式與幾個選擇輸入。 所有選項都通過AJAX加載到一個屬性,它是通過AJAX數據被替換之前與演示數據初始化:selectize.js和vue.js 2 ajax加載optons
addTrackData : {
styles : [
{ id: 1, title: 'style 1' },
{ id: 2, title: 'style 3' },
{ id: 3, title: 'style 2' },
],
authors: [
{inn: '111', name: 'demo 1'},
{inn: '222', name: 'demo 2'},
{inn: '333', name: 'demo 3'}
]
....
},
而且我有2個問題:
1)如果我使用在這樣的設置,選擇不加載在所有:
<selectize v-model="form.data.authors[i]['id']" :settings="selectize.authors"></selectize>
selectize: {
authors: {
valueField: 'inn',
labelField: 'name',
searchField: ['name', 'inn'],
options: this.addTrackData.authors // that doesn't works, but hard coded array works
}
}
由於錯誤Error in data(): "TypeError: Cannot read property 'authors' of undefined"
的。 this.addTrackData.authors
和addTrackData.authors
都出現此錯誤。
但這樣工作的:
<selectize v-model="form.data.authors[i]['id']"
:settings=" {
valueField: 'inn',
labelField: 'name',
searchField: ['name', 'inn'],
options: addTrackData.authors, // It works, but looks too ugly!
}" >
</selectize>
2)選項不具反應 - 當AJAX數據到來時,所有的選擇元素仍然顯示了一個演示數據。我不知道如何更新他們... ...
UPDATE
問題二可以固定如果條件和空初始數組:
<selectize v-if="addTrackData.authors.length" v-model="form.data.authors[i]['id']"
:settings=" {
valueField: 'inn',
labelField: 'name',
searchField: ['name', 'inn'],
options: addTrackData.authors, // It works, but looks too ugly!
}" >
</selectize>
addTrackData : {
styles : [],
authors: []
....
}
但第一個問題還是讓我哭泣
當數據來自服務器時,嘗試使用'this。$ set(this,'addTrackData',receivedData)'設置'addTrackData'。 –
沒有任何變化 – fiter
您可以嘗試的另一件事是將您的'addTrackData.authors'放入**計算屬性**中,並在您的選擇設置中使用它的引用。 –