私はtypescriptとangular.jsを使い慣れています。私はhttp getリクエストで苦労しています。 角度の型定義にDefinitelyTypedを使用しています。TypeScript/angularJS HTTP GETリクエストの範囲
私のコントローラのコードは次のようになります。
module game.Controller {
'use strict';
export interface IGameScope extends ng.IScope {
vm: GameCtrl;
}
export class GameCtrl {
private bonus: any;
private http: any;
constructor($scope: IGameScope, $http: ng.IHttpService, $location: ng.ILocationService) {
$scope.vm = this;
this.http = $http;
}
doBet() {
this.http.get('http://localhost:9000/db').success(function(data: any, status: any) {
this.bonus = data;
}
);
}
}
}
と、このような私の意見:私はhttpリクエストなしでボーナス変数を変更したとき
<button ng-click="vm.doBet()">bet</button>
<div><span>bonus: {{ vm.bonus }}</span></div>
ビュー・モデルバインディングは、正常に動作します。私はget要求の成功関数のボーナス変数を更新しようとすると、しかし、私はエラーを取得以下:
TypeError: Cannot set property 'bonus' of undefined
をどのように私は成功関数の変数を更新するために達成することができますか?リクエストthis.bonus = data;
で
このトピックについてさらに説明していますか?例えば。なぜここでラムダ式を使わなければならないのですか?通常のjsでは – Thomas
となります。 'this'は成功関数では表示されません。 'this'は成功関数(data、status){...});'上記のようなlamba式は自動的に 'var _this = this;'にコンパイルされます。 this.http.get( 'url')。成功(関数(データ、ステータス){_これ。メンバー= "何か"; }); 'のように、' this'はヘルパ変数 '_this'を通してスコープ内で可視になります。助けてくれることを望む。 – 3x14159265