我有一個啓用了vue-router的應用程序,它使用單個文件.vue
組件,使用browserify捆綁在一起。這個應用程序由一個瓶頸web服務器提供,它將全局配置設置(頁面標題,佈局順序等)作爲JSON傳遞給它。我一直在努力以一種乾淨的方式將全局變量傳遞給應用程序。從燒瓶網絡服務器傳遞全球JSON到Vue應用程序
main.js
(用作入口點browserify):
var Content = require('./vue/Content.vue');
var App = Vue.extend();
var router = new VueRouter({ history: true });
router.map({
'/': { component: Content, name: 'home' }
});
router.start(App, '#app');
的index.html,通過網絡服務器燒瓶
<body>
{% with ga_id = ''|get_env('GA_ID') %}
<div id="app" ><router-view ga-id={{ga_id}} global-settings={{globalsettings|tojson|safe}}></router-view></div>
{% endwith %}
<script type="text/javascript">
window.global_settings = {{globalsettings|tojson|safe}};
</script>
<script src="/js/build.js" defer></script>
</body>
App.vue
,應用程序的主要組成部分提供:
<template>
</template>
<script type="text/javascript">
var app = {
props: ['gaId', 'globalSettings'],
ready: function ready() {
console.log(this.gaId); //returns expected string
console.log(this.globalSettings); //truncated at first space in the string
console.log(window.global_settings); // returns expected json
},
module.exports = app;
</script>
爲了完整起見,routes.py
:
@APP.route('/', methods=['GET'])
def index():
settings = APP.app_config['settings']
return render_template('index.html', rawsettings=settings)
感覺不對通過將其設定在window
通過Vue的全局變量,但我一直無法將它傳遞的除外。
我嘗試使用數據功能Vue.extend
在main.js
:
Vue.extend({
data: function() {
return {
global: 'test'
}
}
})
但this.global
在App.vue
不確定。有更好的模式,我應該使用?
我正在調查vuex。但是我的問題仍然存在 - 我如何從'flask'到'vuex'的數據開始? – ebbishop