jol*_*ger 3 javascript angularjs
我有一个带范围的AngularJS应用。在此范围内,有一个通过视图显示的Content对象数组。在视图中,对于每个内容,都有一个选择按钮,该按钮连接到对象的方法selectToggle()。
调用此方法时,将创建一个$ resource,它将一些信息发布到API。在$ resource.query回调中,我需要访问父Content对象,但是由于它是异步的,因此我松开了引用(“ this”未指向Window对象)。
如何在回调函数中传递对创建$ resource的对象的引用?
谢谢
function Content (informations) {
this.selected = false;
this.spinnerEnabled = false;
this.error = null;
this.selectToggle = function () {
this.spinnerEnabled = true;
ContentResource = $resource(
'/en/api/content',
null,
{'query': {'method': 'POST', isArray: false}}
).query({
'type': this.type,
'extId': this.id
}, function (response) {
// Here this is pointing to Window, not to the Content object
// so the following set are useless.
if (response.status == "success") {
this.selected = ! this.selected;
} else if (response.status == "error") {
this.error = response.message;
} else {
this.error = "Request failed";
}
this.spinnerEnabled = false;
});
};
}
Run Code Online (Sandbox Code Playgroud)
您可以这样存储对Content对象的引用:
function Content (informations) {
this.selected = false;
this.spinnerEnabled = false;
this.error = null;
var self = this; // <-- Store reference for use later
// ...
Run Code Online (Sandbox Code Playgroud)
然后,在回调中,您可以参考self:
if (response.status == "success") {
self.selected = ! self.selected;
} else if (response.status == "error") {
self.error = response.message;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1204 次 |
| 最近记录: |