VueJS无法在移动设备上运行

时间:2016-06-30 14:02:44

标签: javascript jquery vue.js vue-resource

我在移动设备上运行VueJS时遇到问题。我在copepen.io上创建了一个天气预报应用

以下是该项目的链接:

http://codepen.io/techcater/pen/xOZmgv

HTML code:

df.col1.str.extract(r'{(.*)}', expand=False).str.split(', ', expand=True)

JS代码:

<div class="container-fluid text-center">
      <h1>Your Local Weather</h1>
      <p>
        {{location}}
      </p>
      <p>
        {{temperature}}
        <a @click="changeDegree">{{degree}}</a>
      </p>
      <p>
        {{weather | capitalize}}
      </p>

      <img :src="iconURL" alt="" />
      <br>
      <a href="https://ca.linkedin.com/in/dalenguyenblogger" target="_blank">by Dale Nguyen</a>
<!--   <pre>{{$data | json}}</pre> -->
    </div>

它适用于我的笔记本电脑但不适用于移动设备。起初,我认为这是因为Codepen。在网站上运行时可能会出现问题。但是,当我在我的网站上创建项目时,它也不起作用。

您能帮忙找到问题吗?谢谢,

2 个答案:

答案 0 :(得分:2)

您的代码似乎运行良好,除了在codepen上它给我错误XMLHttpRequest cannot load http://ipinfo.io/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://s.codepen.io' is therefore not allowed access.

您可以将您的域名放在headers选项上以启用跨域,例如:

this.$http.get('http://ipinfo.io', {
    'headers': {
        'Origin': 'http://yourdomain.com'
    }
})

参见示例:http://bozue.com/weather.html

我还注意到您将vue.min.jsvue-resource.js脚本放错了可能会触发某些错误,vue.min.js应该放在第一位。

答案 1 :(得分:1)

我找到了解决方案。我现在在手机上工作。我相信我也会在其他浏览中工作。问题是某些浏览器无法识别操作&#34;&gt;&#34;,所以我改变了它。

这是新代码:

getWeather: function(){
            var that = this;

            this.$http.get('http://ipinfo.io', {'headers': {
        'Origin': 'http://yourdomain.com'}
            }).then(function(response) {
                  console.log(response.data);
                  that.location = response.data.city + ", " + response.data.country;

                  // Get weather informaiton
                  var api = 'ebd4d312f85a230d5dc1db91e20c2ace';
                  var city = response.data.city;
                  var url = "https://crossorigin.me/http://api.openweathermap.org/data/2.5/weather?q={CITY}&APPID={APIKEY}&units=metric";
                  url = url.replace("{CITY}",city);
                  url = url.replace("{APIKEY}", api); 

                  that.$http.post(url,{dataType: 'jsonp'},{
              headers : {
                'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
            }}).then(function(response) {
                    console.log(response.data);
                  that.temperature = response.data.main.temp;
                  that.weather = response.data.weather[0]['description'];
                  that.iconURL = "http://openweathermap.org/img/w/" + response.data.weather[0]['icon'] + ".png";
                  }).then(function(){
                      // error callback
                  });

              }).then(function(){
                  console.log(response.data);            
              });            
          },