如何避免在Vue中重新定义函数范围?

时间:2017-12-01 15:41:40

标签: javascript vue.js vuejs2 this vue-component

如何避免创建假this以访问组件data属性?因为我有一个传递给Array.forEach的新函数,thi s关键字实际上是指函数而不是Vue实例。

created () {
    this.items.push({
        value: 1000,
        selected: false
    });

    var otherThis = this;
    someAjaxOperation.returnedJson.forEach(function (item, index) {
        otherThis.items.push({
            selected: false,
            value: item
        })
    });
}

正如您所看到的,我有创建this副本的hacky解决方法。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

始终可以访问vue实例的一种简单方法是通过声明它时使用的变量。

例如,如果你有这样的代码:

   var app = new Vue({
        el: '#app',
        data: {
              someVar: 1
        }
    });

然后,您始终可以通过someVar

访问app.someVar

所以你的例子变成了:

 created () {
     this.items.push({
         value: 1000,
         selected: false
     });


     someAjaxOperation.returnedJson.forEach(function (item, index) {
         app.items.push({
             selected: false,
             value: item
         })
     });
 }