Angularjs TypeError:无法读取属性'_范围';未定义的

Angularjs TypeError:无法读取属性'_范围';未定义的,angularjs,typescript,jasmine,this,httpbackend,Angularjs,Typescript,Jasmine,This,Httpbackend,当我在Jasmine中运行测试时,我得到了这个错误。我正在尝试为模拟ajax调用创建一个测试。数据本身并不重要,我只想看看测试运行。我的代码: 导出接口IMockScope扩展了ng.IScope{ 推广:任何; 杀螨剂:细绳; } 导出类控制器{ 私有模拟服务:模拟服务; 专用范围:IMockScope; 构造函数($scope:IMockScope,mockService:mockService){ //分配范围和服务 这是。_mockService=mockService; 如果($sc

当我在Jasmine中运行测试时,我得到了这个错误。我正在尝试为模拟ajax调用创建一个测试。数据本身并不重要,我只想看看测试运行。我的代码:

导出接口IMockScope扩展了ng.IScope{
推广:任何;
杀螨剂:细绳;
}
导出类控制器{
私有模拟服务:模拟服务;
专用范围:IMockScope;
构造函数($scope:IMockScope,mockService:mockService){
//分配范围和服务
这是。_mockService=mockService;
如果($scope==未定义){
抛出(“例外”);
}
if(typeof($scope)==“MockController”){
log(“我是正确的类型”);
}
这个._scope=$scope;
//获取要加载的升级的prometric ID
这是.\u scope.prometricId=“xxx”;
//通过服务调用加载促销
this.\u mockService.GetPromotion(this.\u scope.prometricId).then(函数(数据:any){
这。_scope.promotion=数据;
},空);
}
}
导出类模拟服务{
私有$http:ng.IHttpService;
私人u$q:ng.IQService;
构造函数($http:ng.IHttpService,$q:ng.IQService){
这是。$http=$http;
这个。$q=$q;
}
GetPromotion(prometricId:string):ng.IPromise{
var deferred=这个。$q.deferred();
风险值数据={
杀螨剂
};
风险值提升:任何;
这是。$http.get(“/PreEval/GetPromotion”)。然后(函数(数据:any){
晋升=数据;
决定(晋升);
},空);
回报。承诺;
}
}
var mockApp=angular.module('mockApp',[]);
//mockApp.controller('MyController',MyController);
controller('MyController',[“$scope”,“mockService”,function($scope:IMockScope,mockService:mockService){
返回新的MockController($scope,mockService);
}]);
mockApp.factory(“mockService”、[“$http”、“$q”、函数($http:ng.IHttpService、$q:ng.IQService){
返回新的MockService($http,$q);
}]);
您正在这里的函数中丢失
这个
上下文。改用箭头函数:

        this._mockService.GetPromotion(this._scope.prometricId).then(data => {
            this._scope.promotion = data;
        }, null);

太好了!谢谢
        this._mockService.GetPromotion(this._scope.prometricId).then(data => {
            this._scope.promotion = data;
        }, null);