Javascript 从外部重新加载vue组件

Javascript 从外部重新加载vue组件,javascript,laravel,vue.js,vuejs2,Javascript,Laravel,Vue.js,Vuejs2,我有一个laravel vue项目,它显示组件中的项目列表。挂载时,组件会发出ajax调用来填充数据元素。但是,页面上还有其他项目(不在vue中)可以向数据库添加元素,我希望确保该列表在组件中是被动的 mounted() { this.getTasks(); }, methods: { getTasks() { let self = this; axios.get('/tasks').then(response => {

我有一个laravel vue项目,它显示组件中的项目列表。挂载时,组件会发出ajax调用来填充数据元素。但是,页面上还有其他项目(不在vue中)可以向数据库添加元素,我希望确保该列表在组件中是被动的

mounted() {
    this.getTasks();
},
methods: {
    getTasks() {
        let self = this;
        axios.get('/tasks').then(response => {
            self.tasks = response.data;
        })
        .catch(function (error) {
            console.log(error);
        });
    },
}

当用户执行将任务添加到列表中的操作时,是否有方法从组件外部对组件启动
gettask
方法

您可以在安装组件时声明全局函数(将上下文绑定到Vue组件):

mounted() {
  windows.getTasks = this.getTasks.bind(this);
  this.getTasks();
},

然后,您可以在调用
getTasks()
windows.getTasks()

的外部使用它。您可以在安装组件时声明全局函数(将上下文绑定到Vue组件):

mounted() {
  windows.getTasks = this.getTasks.bind(this);
  this.getTasks();
},

然后您可以在调用
getTasks()
windows.getTasks()
的外部使用它。您应该使用vuex操作

下面是一个例子:

Vue.component('ChildB',{
  template:`
    <div class="child childB">
      <h1> Score: {{ score }} </h1>
      <button @click="changeScore">Change Score</button>
    </div>`,
  computed: {
    score () {
      return this.$store.getters.score
    }
  },
  methods: {
    changeScore () {
      this.$store.dispatch('incrementScore', 3000)
    }
  }
})
Vue.component('ChildB'{
模板:`
分数:{{Score}
换分
`,
计算:{
分数(){
返回此。$store.getters.score
}
},
方法:{
更改分数(){
此.$store.dispatch('incrementScore',3000)
}
}
})
完整资料来源:


您应该使用vuex操作

下面是一个例子:

Vue.component('ChildB',{
  template:`
    <div class="child childB">
      <h1> Score: {{ score }} </h1>
      <button @click="changeScore">Change Score</button>
    </div>`,
  computed: {
    score () {
      return this.$store.getters.score
    }
  },
  methods: {
    changeScore () {
      this.$store.dispatch('incrementScore', 3000)
    }
  }
})
Vue.component('ChildB'{
模板:`
分数:{{Score}
换分
`,
计算:{
分数(){
返回此。$store.getters.score
}
},
方法:{
更改分数(){
此.$store.dispatch('incrementScore',3000)
}
}
})
完整资料来源:


我会不惜一切代价避免使用全局函数。您可以使用vuex来管理状态,然后可以对组件调用相同的方法。通过这种方式,您可以控制状态——上面的示例是使用有效负载触发操作的方法的一个很好的示例。如果你想让我们说,火2个方法在同一时间只需使用计算。getter也是获取特定数据的好方法。我希望我能帮上忙,我会不惜一切代价避免全球功能。您可以使用vuex来管理状态,然后可以对组件调用相同的方法。通过这种方式,您可以控制状态——上面的示例是使用有效负载触发操作的方法的一个很好的示例。如果你想让我们说,火2个方法在同一时间只需使用计算。getter也是获取特定数据的好方法。我希望我能帮忙