提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近在vue项目使用http://pv.sohu.com/cityjson?ie=utf-8接口获取客户端用户的ip及地区,出现returnCitySN未定义的错误,经过分析returnCitySN属于window的一个属性变量,而不是Vue中的一个属性变量,而在vue中如果要使用全局变量,需要在main.js中赋予变量给Vue,所有想到的解决办法在main.js中将window的returnCitySN变量赋值给Vue,如:
- index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
<% if (htmlWebpackPlugin.options.nodeModules) { %>
<!-- Add `node_modules/` to global paths so `require` works properly in development -->
<script>
require('module').globalPaths.push('<%= htmlWebpackPlugin.options.nodeModules.replace(/\\/g, '\\\\') %>')
</script>
<% } %>
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
</head>
<body>
<div id="app"></div>
<!-- Set `__static` path to static files in production -->
<% if (!process.browser) { %>
<script>
if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
</script>
<% } %>
<!-- webpack builds are automatically injected -->
</body>
<style>
body{
margin: 0 0;
overflow-y: hidden;
overflow-x: hidden;
}
</style>
</html>
- main.js
import Vue from 'vue'
import axios from 'axios'
Vue.prototype.$returnCitySN = window.returnCitySN;
new Vue({
i18n,
components: { App },
router,
store,
template: '<App/>'
}).$mount('#app')
总结
Vue就是全局对象,想在其他vue文件中使用变量,只需要设置成Vue中的一个属性变量,通过this对象(vue)获取设置的属性即可。