私のvuejsアプリケーションにコンテンツのJSONファイルをロードし、コンポーネントにアクセスしようとしています。私は、APIを作成することにより、vuexストアにJSONを読み込むことができています:データのjsonをvuexストアに格納し、コンポーネント内のアクセス
import Vue from 'vue';
const Http = new Vue();
export function getData() {
return Http.$http.get('./app/assets/content/en_uk.json')
.then(response => Promise.resolve(response.data))
.catch(error => Promise.reject(error));
}
と私はメインVUEインスタンスの作成機能
export default new Vue({
el: '#root',
store,
router,
created() {
getSiteContent(store);
},
render: h => h('router-view')
});
上getSiteContentを実行するアクション
export const getSiteContent = ({commit}) => {
api.getData().then(data => {
commit('siteContent', data);
});
};
クロムのvueデバッグツールを使用して店舗を見ることができます
export const state = {
isSearching: false,
searchQuery: '',
siteData: {},
filteredComponents: [],
hasResults: false,
activeComponent: null
};
はsiteDataで更新されます。私は未定義のPROJECT_NAMEのプロパティを読み取ることができません取得{{mumbo}}
のように私のコンポーネントで
{
"global": {
"project_name": {
"text": "Project title"
},
"search": {
"form_placeholder": {
"text": "Search..."
},
"no_results": {
"text": "Sorry no results for '{0}' was found"
},
"search_text": {
"text": "You are searching for '{0}' and there are {1} found"
}
}
}
}
は私がしようとするとアクセス
computed: {
...mapGetters(['siteData']),
mumbo() {
return this.siteData.global.project_name;
}
}
:
これは、JSONの一部です。私はこのように感じる
は私が何か間違ったことをやっている場合、私はわからないか、私はへの接続をしないのですsiteData.global
を返すように設定したときに、それが転倒しないように、時間の問題ですこれを動作させる。
ありがとう、私はテストし、これが動作します。私はちょうどそこにこれを他の方法があるのだろうか?それとも何をすべきか全部をやっているのですか? – saunders
個人的には、これは良いパターンであり、やり方であると思います。代わりに、Vueコンポーネントが初期化される前にデータをロードすることもできますが、通常はそれはもっと複雑です... – Aletheios
コンポーネントがロードされる前にデータをロードしたい場合は、 pleaseを見てください – saunders