Vue js。数据字段没有绑定

时间:2018-03-25 13:28:36

标签: javascript html5 vue.js vuejs2 two-way-binding

我对Vue元素有以下定义:

new Vue({
  el: "#app",
  data: {
    latitude1: 'a',
    name: 'aa'
  },
  mounted() {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(position => {
        this.latitude1 = position.coords.latitude;
      })
    } else {
      this.latitude1 = "WTF??"
      // this doesn't work either:
      // this.$nextTick(() => { this.latitude1 = "WTF??" })
    }
  },
  methods: {
    // button works... WTF?!?
    doIt() {
      this.latitude1 = "WTF??"
    }
  }
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
  <div>{{ latitude1 }}: {{ name }}</div>
  <button @click="doIt">Do it</button>
</div>

我可以看到正在填充的位置数据。警报显示纬度,但数据字段latitude1的双向绑定不起作用。 我已尝试使用此方法存储对象状态,但也无效。

我的HTML如下:

<div class="form-group" id="app">
 <p>
   {{latitude1}}
 </p>
</div>

1 个答案:

答案 0 :(得分:2)

Vue.js中要做的一件事就是使用定义的方法进行反应性属性更改。

以下是我提供的代码:

function error(err) {
  console.warn(`ERROR(${err.code}): ${err.message}`);
}

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};

new Vue({
  el: "#app",
  data: {
    latitude1: 'a',
    name: 'aa'
  },
  mounted: function() {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(position => {
        console.log(position.coords.latitude);
        Vue.set(this, 'latitude1', position.coords.latitude);
      }, error, options)
    }
  }
});

我还为导航器查询设置了错误处理程序和选项。要查看结果,请检查控制台。