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,作为一种设计,这是可以的。就像我做的项目一样。那我就不用担心这个了。