从vuejs中的方法设置数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从vuejs中的方法设置数据相关的知识,希望对你有一定的参考价值。

我正在尝试从方法中设置数据。我正在使用fetch来获取休息数据。但是,当我尝试设置数据时,使用this.item ='test'不起作用。所以,当我的this.item在里面时“.then”不起作用。但是什么时候没有“.then”它工作......但我需要使用休息调用来获取数据......

Vue.component('internal_menu', {
   props: ['list'],
   data: function () {
      return {
         item: '1'
      }
   },
methods: {
   teste(event)
   {
       event.preventDefault();
       var payload = {
           method: 'GET',
           headers: { "Accept": "application/json; odata=verbose" },
           credentials: 'same-origin'    // or credentials: 'include'  
       }
       const url = _spPageContextInfo.webAbsoluteUrl + 
       "/_api/Web/Lists/GetByTitle('"+ this.list +"')/Items? 
       $select=Title,Id,Link,Icone&$orderby=Title%20asc";
       fetch(url,payload)
          .then((resp) => resp.json())
          .then(function(data) 
          {
              let items = data.d.results;
              this.item = 'teste';// this not working here
          })
        . catch(function(error) {
             console.log(JSON.stringify(error));
          });
          this.item = 'tst123'; //this working here
     },

 },
 template: `
    <div id='tst'>
       <h3>{{list}} - {{item}}</h3>
        <button v-on:click="teste">Try Me</button>
    </div>
`,
 mounted: function () {
    this.getMenuData();
 }
})

new Vue({
   el: "#app"
})

谢谢埃弗顿

答案

当你这样做:

.then(function(data) 
      {
          let items = data.d.results;
          this.item = 'teste';// this not working here
      })

你的闭包对this的引用是在匿名函数的上下文中。相反,您需要使用fat arrow函数来维护Component的上下文。

.then((data) => {
    let items = data.d.results;
    this.item = 'test';
})

以上是关于从vuejs中的方法设置数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery $.getJSON() 从 Vuejs 方法中的本地 json 文件获取数据

无法从Vuejs中的子组件向父组件发出事件

从 Android Studio 中的片段将数据写入 Firebase

如何在 Vs Code 中更改默认自动选择的用户片段行为

从图库中获取图像以在片段中的图像视图中设置? [复制]

如何从片段中的 JSON 响应中的对象获取数据