Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js TypeScript不是打算为我处理这个范围吗?_Knockout.js_Typescript - Fatal编程技术网

Knockout.js TypeScript不是打算为我处理这个范围吗?

Knockout.js TypeScript不是打算为我处理这个范围吗?,knockout.js,typescript,Knockout.js,Typescript,我正在使用敲除和打字脚本 我在这方面遇到了一个错误: AppViewModel.prototype.setActive = function (data, event) { this.active(data); }; 从该类型脚本文件: export class AppViewModel { ///Properties projects = projects; error = ko.observable(); activ

我正在使用敲除和打字脚本

我在这方面遇到了一个错误:

AppViewModel.prototype.setActive = function (data, event) {
            this.active(data);
        };
从该类型脚本文件:

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);
    }
}
对象#没有“活动”方法,其绑定方式如下:

<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。它一直工作到我点击链接

    我不能100%确定这个错误是否与我不理解的绑定相关,或者与typescript生成的函数相关,并且这是没有正确处理的


    这在原型函数中指的是对象本身吗?或者函数范围?

    TypeScript不会尝试猜测您想要的上下文是哪个
    。如果希望
    setActive
    始终将类实例用作
    上下文,则可以在构造函数中绑定它:

    export class AppViewModel {
        ...
        constructor() {
            this.active = ko.observable();
            DataContext.getProjects(this.projects, this.error);
            this.setActive = this.setActive.bind(this);
        }
        ...
    }
    

    将活动变量放在类的外部var active=ko.observable()和类的内部active=active,作为一种设计,这是可以的。就像我做的项目一样。那我就不用担心这个了。