【发布时间】:2017-03-26 22:18:24
【问题描述】:
我试图让我的代码工作,但我的运气为零。 这是我的代码:
class ReleasesController{
constructor(API,$rootScope,$scope){
'ngInject';
this.$rootScope = $rootScope;
this.$scope = $scope;
this.API = API;
}
$onInit(){
this.releasesList= [];
this.API.all(this.$rootScope.type).get('').then((response) => {
_.each(response, function (release) {
_.each(release.releases, function (videorelease) {
this.releasesList.push({
name: release.name,
image: release.image,
views: videorelease.views,
hash: videorelease.hash,
episode: videorelease.episode
});
});
});
})
}
}
export const ReleasesComponent = {
templateUrl: './views/app/components/releases/releases.component.html',
controller: ReleasesController,
controllerAs: 'rs',
bindings: {}
};
这是错误:
TypeError: Cannot read property 'releasesList' of undefined
at eval (eval at <anonymous> (http://website.dev/js/final.js:127247:1), <anonymous>:33:21)
at Function._.each._.forEach (http://website.dev/js/final.js:61512:9)
at eval (eval at <anonymous> (http://website.dev/js/final.js:127247:1), <anonymous>:32:15)
at Function._.each._.forEach (http://website.dev/js/final.js:61512:9)
at eval (eval at <anonymous> (http://website.dev/js/final.js:127247:1), <anonymous>:31:11)
at processQueue (http://website.dev/js/final.js:16648:37)
at http://website.dev/js/final.js:16692:27
at Scope.$eval (http://website.dev/js/final.js:17972:28)
at Scope.$digest (http://website.dev/js/final.js:17786:31)
at Scope.scopePrototype.$digest (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:1364:23) Possibly unhandled rejection: {}
我尝试调试它,但我不知道为什么变量是undefined。
谁能解释一下?
【问题讨论】:
-
我认为 this.releasesList 改变了 _.each 函数内部的上下文,这意味着它是未定义的。尝试使用箭头函数。
-
使用胖箭头
=>函数来保留this绑定。 -
在 ngOnInit() 中使用它之前,您能否在构造函数之前声明 releaseList 并查看是否有区别?
releasesList; -
谢谢大家箭头功能正常工作。
标签: javascript angularjs ecmascript-6