Model Typescript中的Kendo Ui数据源架构模型
我的Angular应用程序中有一个kendo.data.Model,我正在将其转换为Typescript。在我将模型定义添加到模式之前,数据源工作正常 使用Typescript Kendo使用数据源定义模型还有其他语法吗 非打字脚本版本工作正常Model Typescript中的Kendo Ui数据源架构模型,model,kendo-ui,typescript,schema,datasource,Model,Kendo Ui,Typescript,Schema,Datasource,我的Angular应用程序中有一个kendo.data.Model,我正在将其转换为Typescript。在我将模型定义添加到模式之前,数据源工作正常 使用Typescript Kendo使用数据源定义模型还有其他语法吗 非打字脚本版本工作正常 var someModel = new kendo.data.Model({ id: "id", fields: { id: { type: "string" }, name: { type:
var someModel = new kendo.data.Model({
id: "id",
fields: {
id: { type: "string" },
name: { type: "string", validation: { min: 1, required: true } },
isActive: { type: "boolean" }
}
});
var source = new kendo.data.DataSource({
transport: {
read: (options: any) => {
someService.getData(options.data).then(function (results) {
options.success(results.data);
});
}
},
schema: {
model: someModel
}});
编辑:问题是我错过了“kendo.data.Model.define({})”中的“define”。但在更改它时,问题转移了,现在我无法在其他代码中使用类型化模型:
class Foo {
someModelProp: kendo.data.Model;
constructor() {
this.someModelProp = kendo.data.Model.define({*see above code for fields*});
}
}
我在“this.someModelProp=”行中得到编译错误:
类型“typeof Model”不可分配给类型“Model”。类型“typeof Model”中缺少属性“\u defaultId”
我可以将“someModelProp”更改为“any”,但我不再使用类型化模型,这与Typescript的目的背道而驰。可能很旧,但我一直在寻找相同的问题。 如果有帮助,这对我很有用:
class Foo extends kendo.data.Model {
private modelDef: typeof kendo.data.Model = kendo.data.Model.define({*see above code for fields*});
private model: kendo.data.Model;
private data: any;
constructor() {
super();
this.model = new this.modelDef([]);
}
init(data: any): Foo {
this.data = data;
this.model = new this.modelDef(data);
return this;
}
// Typescript properties
get _Id(): number { return this.model.get('id'); }
set _Id(value: number) { this.model.set('id', value); }
get _Name(): number { return this.model.get('name'); }
set _Name(value: number) { this.model.set('name', value); }
}
重要提示:在typescript属性中使用下划线,否则会发生运行时错误,请验证它并查看生成的JavaScript
我希望这会有所帮助,如果有人有更好的解决方案或任何评论,请提前感谢!您能展示您的typescript代码并描述哪些不起作用吗?上面的示例是typescript。它看起来与普通js示例没有什么不同,除了“read:(options:any)=>{”,即“read:function(options)”{“在纯js中,我今天早上发现了这个问题,请参见编辑。