我对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>
答案 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)
}
}
});
我还为导航器查询设置了错误处理程序和选项。要查看结果,请检查控制台。