当更改数据使用vue2.0时,javascript'this'关键字很棘手

时间:2017-02-21 13:17:33

标签: javascript vuejs2

我正在学习vue2.0 我希望在安装组件时从远程获取数据,
并在数据恢复时刷新视图 代码在

之下
import VideoItem from './VideoItemComponent.vue'
import {fetchTop250} from '../service'
export default {
  components: {VideoItem},
  data(){
    return {
      items: [1]
    }
  },
  mounted() {
    console.log('app mounted')
    console.log('before request items size ' + this.items.length)
    var se = this
    fetchTop250()
      .then(function (response) {
        console.log(se.items.length)
        console.log(this.items.length)
        console.log(response)
      })
      .catch(function (error) {
        console.log(error)
      })
  }
}

在服务中,我使用Promise和axios来获取数据。

export function fetchTop250() {
  return new Promise(function (resolve, reject) {
    axios.get('http://localhost:8880/v2/movie/in_theaters')
      .then(function (response) {
        resolve(response)
      }).catch(function (error) {
      reject(error)
    })
  })
}

从远程获取数据后,在然后方法中运行, 关键字未定义。 img for debug

我搜索了You-Dont-Know-JS(this & Object Prototypes)Chapter 1: this Or That?Chapter 2: this All Makes Sense Now!

我知道如果我定义了一个可变量引用,并使用然后函数中的varable,它可以工作。 但我无法知道正确的事情。

  1. 我知道 console.log(this.items)函数调用堆栈位于然后功能上下文中。因此无法调用项目已安装范围内,但为什么 未定义
  2. 如何正确更改数据功能中定义的项目?
  3. thx。

0 个答案:

没有答案