【问题标题】:Kendo Ui DataSource schema model in TypescriptTypescript 中的 Kendo Ui DataSource 模式模型
【发布时间】:2015-08-05 04:54:57
【问题描述】:

我的 Angular 应用中有一个 kendo.data.Model,我正在将其转换为 Typescript。在我将模型定义添加到架构之前,数据源工作正常。

是否有另一种语法来使用 Typescript Kendo 定义具有 DataSource 的模型?

非 Typescript 版本运行良好。

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({})”中的“定义”。但是在更改它时,问题转移了,现在我不能在其他代码中使用类型化模型:

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”类型中缺少属性“_defaultId”。

我可以将“someModelProp”更改为“any”,但随后我将不再使用类型化模型,这与 Typescript 的目的背道而驰。

【问题讨论】:

  • 你能展示你的打字稿代码并描述什么不起作用吗?
  • 上面的例子是Typescript。它看起来与普通 js 示例并没有什么不同,除了“read: (options: any) => {”,它在普通 js 中是“read: function (options) {”。我今天早上发现了这个问题,请参阅编辑。

标签: model kendo-ui typescript schema datasource


【解决方案1】:

也许老了,但我一直在寻找同样的问题。 如果有帮助,这对我有用:

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 ...

我希望这会有所帮助,如果有人有更好的解决方案或任何意见,请提前致谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多