Javascript 使用TurboLink时如何在jquery调用后更新vuejs组件数据
我有一个vuejs组件,安装后应该显示从服务器获取的数据,并使用响应更新数据。当我使用turbolinks时,vue js不会更新dom 我尝试了许多不同的方法,但没有一种有效Javascript 使用TurboLink时如何在jquery调用后更新vuejs组件数据,javascript,jquery,ajax,turbolinks,vuejs2,Javascript,Jquery,Ajax,Turbolinks,Vuejs2,我有一个vuejs组件,安装后应该显示从服务器获取的数据,并使用响应更新数据。当我使用turbolinks时,vue js不会更新dom 我尝试了许多不同的方法,但没有一种有效 Vue.component('pf-main-menu', { props: [''], template: '<pf-menu v-bind:links="links"></pf-menu>', data: function () { return { links: [{te
Vue.component('pf-main-menu', {
props: [''],
template: '<pf-menu v-bind:links="links"></pf-menu>',
data: function () {
return { links: [{text: 'teste'}] }
},
mounted: function() {
this.links = [{text: 'teste 2'}]; <-- This change works
$.ajax({
url: '/api/v1/menus/main_menu.json',
}).success(function(res) {
this.links = [{text: 'teste 3'}]; <-- This change does not work
}.bind(this));
}
});
Vue.component('pf-main-menu'{
道具:[''],
模板:“”,
数据:函数(){
返回{links:[{text:'teste'}]}
},
挂载:函数(){
this.links=[{text:'teste2'}];之所以发生这种情况,是因为您的this没有指向正确的作用域,它的作用域在$.ajax调用中发生了更改,所以您只需执行以下操作:
mounted: function() {
this.links = [{text: 'teste 2'}]; <-- This change works
var self = this
$.ajax({
url: '/api/v1/menus/main_menu.json',
}).success(function(res) {
self.links = [{text: 'teste 3'}]; <-- This change does not work
}.bind(this));
}
});
mounted:function(){
this.links=[{text:'teste2'}];之所以发生这种情况,是因为您的this没有指向正确的作用域,它的作用域在$.ajax调用中发生了更改,所以您只需执行以下操作:
mounted: function() {
this.links = [{text: 'teste 2'}]; <-- This change works
var self = this
$.ajax({
url: '/api/v1/menus/main_menu.json',
}).success(function(res) {
self.links = [{text: 'teste 3'}]; <-- This change does not work
}.bind(this));
}
});
mounted:function(){
this.links=[{text:'teste2'}];根据Vue文档,您必须使用Vue.set来确保反应行为
data: function () {
return {
menu: {
links: [ {text: 'teste'}] }
}
}, ....
在ajax success return中:
Vue.set(this.menu, links, [{text: 'teste 3'}] );
更多信息根据Vue文档,您必须使用Vue.set以确保反应性行为
data: function () {
return {
menu: {
links: [ {text: 'teste'}] }
}
}, ....
在ajax success return中:
Vue.set(this.menu, links, [{text: 'teste 3'}] );
更多信息我更新了问题,我在之前尝试过你的方法=(.Thx用于answerI discovery,现在问题与turbolinks有关。我更新了问题,我在之前尝试过你的方法=(.Thx用于answerI discovery,现在问题与turbolinks有关