提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

最近在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)获取设置的属性即可。

Logo

前往低代码交流专区

更多推荐