KnockoutJSとTypescriptを使用してシングルページアプリケーションを作成しています。
問題はこれです、私はメソッドを持つMainViewModelを持っています:
public addToCase(email) {
this.addToCaseVM.setEmail(email, this.getEmailBody());
};
私のページには、次のようにhtmlでバインドされた[ケースに追加]ボタンがある電子メールビューがあります。
<a class="btn btn-info" data-bind="click: $root.addToCase" data-toggle="modal" href="#addToCaseModal"><i class="icon-plus-sign"></i> Add To Existing Case</a>
$rootは私のMainViewModelです。このボタンをクリックすると、関数の「email」パラメーターはMainViewModelで正しく選択された電子メールですが、関数のスコープもEmailViewModelであり、関数が定義されているMainViewModelではありません。
これが発生する理由を理解しています。純粋なJavaScriptの場合のように、MainViewModelインスタンスへのポインターを宣言できないため、Typescriptで特定の問題を解決する方法に興味があります。
var MainViewModel = (function(){
var self = this;
this.addToCase = function(email) {
self.addToCaseVM.setEmail(email, self.getEmailBody());
};
})();