Typescript 打字脚本和敲除自定义活页夹
我想创建一个typescript类,该类将使用Mecanism of knockout完成所有绑定。第一步已经完成,但现在我被卡住了。 我可以将数据绑定到我的html,但我不能操作它们并刷新绑定 到目前为止,我有:Typescript 打字脚本和敲除自定义活页夹,typescript,knockout.js,data-binding,Typescript,Knockout.js,Data Binding,我想创建一个typescript类,该类将使用Mecanism of knockout完成所有绑定。第一步已经完成,但现在我被卡住了。 我可以将数据绑定到我的html,但我不能操作它们并刷新绑定 到目前为止,我有: import * as ko from "knockout"; module Data { export class Binder { private _observableContext = ko.observable(); constr
import * as ko from "knockout";
module Data {
export class Binder {
private _observableContext = ko.observable();
constructor() { ... }
public get ObservableContext() {
return this._observableContext ;
}
public set ObservableContext(value: any) {
this._observableContext = value;
}
public bind(elementID: string) {
ko.applyBindings(this._observableContext, $("#"+elementID));
}
}
}
我是这样用的:
Class MyPage {
private _binder: Data.Binder;
public constructor() {
this._binder.ObservableContext({
data1: MethodA,
data2: SomeObject.GetData(),
...
});
this._binder.bind("someHtmlID");
}
public MethodA = () => {
// do some operations on the binder.ObservableContext() and refresh data
}
}
我尝试了许多方法使其工作,但在修改了_绑定器之后,仍然无法刷新绑定。
活页夹数据已完全更改,但结果不会显示在屏幕上
有什么想法吗?我不太清楚活页夹的目的是什么,但是我假设您的主要任务是使TypeScript与knockout一起工作。 由于TypeScript只是JavaScript的一个超级版本,所以您可以完成淘汰网站上描述的所有标准操作 但是,为了更方便地开发,建议使用 TypeScript敲除的经典示例: 模板:
<div id="content">
<div data-bind="text: previousCount"></div>
<div data-bind="text: count"></div>
<button type="button" data-bind="click: increaseCount">Click Me!</button>
</div>
您的视图模型
import ko from "knockout";
class MyViewModel {
// use observable for binding to view
count: KnockoutObservable<number> = ko.observable(0);
// computed property example
previousCount: KnockoutComputed<number> = ko.pureComputed(()=> {
const currentCount = this.count();
return currentCount - 1;
});
constructor() {
const element = document.getElementById("content");
ko.applyBindings(this, element);
}
increaseCount = ()=> {
const currentCount = this.count();
this.count(currentCount + 1);
}
}
你想用活页夹达到什么目的?您是否只需要更改绑定器上下文中的属性值并期望UI更新?或者最终会变得更复杂?目的是创建一个使用击倒功能的自定义框架。所以binder对象应该在我的类(实际上像viewmodels)和HTML之间进行所有绑定,由于没有经典的导航,导航是通过实例化类并在一个容器中加载html的一部分来完成的。如果您试图基于敲除构建自定义SPA,那么最好从角度进行调整,如果您仍然希望使用敲除来实现这一点,那么从现有解决方案中选择一些好的路由器,并根据您的需要进行调整。我建议每一件事都要基于。因此,每个页面都可以是单独的组件,每个页面都可以使用绑定流,如中所述。感谢您的建议。我将看一看组件,这是我的应用程序的精神,所以它肯定会有用。一开始我没想到要用角度。现在切换到angular还不晚,我也会看一看。非常感谢。谢谢你的回答。我想我将不得不改变我的观点,做一些不那么复杂的事情。