私はノックアウトと TypeScript を使用しています。
これでエラーが発生します:
AppViewModel.prototype.setActive = function (data, event) {
this.active(data);
};
この TypeScript ファイルから:
export class AppViewModel {
///Properties
projects = projects;
error = ko.observable();
active = ko.observable();
//setActive: (data,e)=>void;
///Constructor
constructor()
{
this.active = ko.observable();
DataContext.getProjects(this.projects, this.error);
}
isActive(data)
{
return this.active() == data;
}
setActive(data, event) {
this.active(data);
}
}
オブジェクト # にはメソッド 'active' がなく、次のようにバインドされています。
<li class="nav-header">Projects</li>
<!-- ko foreach: projects -->
<li class="">
<a href="#" data-bind="click: $parent.setActive, css: { active: ($parent.isActive($data)) }">
<i class="icon-pencil"></i>
<span style="padding-right: 15px;" data-bind="text: title"></span>
</a>
</li>
<!-- /ko -->
$Parent は AppViewModel である必要があります。リンクをクリックするまで機能します。
エラーがバインディングで理解できないものに関連しているのか、それとも typescript によって生成された関数に関連しているのか、100% 確信が持てず、これが適切に処理されていません。
プロトタイプ関数の this は、オブジェクト自体を参照していますか? または機能範囲?