2

私はノックアウトと 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 は、オブジェクト自体を参照していますか? または機能範囲?

4

1 に答える 1