示例代码:
render: function() {
this.getAsyncData(function() {
this.specialFunction = (function(){
//make nested calls again
}.bind(this));
this.specialFunction();
}.bind(this));
}
bind()
方法var self = this;
,然后使用内部自我请列出访问父上下文的所有其他可能方式。
答案 0 :(得分:0)
在ES6中,如果要保持相同的上下文,可以使用胖箭头。
它等于ES6代码:
function Person() {
this.age = 0;
setInterval(() => {
this.age++; // |this| properly refers to the person object
}, 1000);
}
var p = new Person();
它等同于ES5代码:
function Person() {
var _this = this;
this.age = 0;
setInterval(function () {
_this.age++; // |this| properly refers to the person object
}, 1000);
}
var p = new Person();
您可以在此处阅读有关箭头功能的更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
在Angular中,您可以使用vm
来更好地处理范围并避免嵌套范围的问题。它自Angular添加controller as
语法后可用。
通过使用此功能,您可以在不使用$ scope。$ parent的情况下访问所需的任何范围。它还为您提供了更好的可读性,并使代码更易于理解。
<div ng-controller="ShopController as shop">
<p>{{ shop.name }}</p>
<div ng-controller="CustomerController as customer">
<p>{{ shop.address }}</p>
<p>{{ customer.address }}</p>
</div>
</div>
您可以在此处阅读更多内容https://johnpapa.net/angularjss-controller-as-and-the-vm-variable/