1

到目前为止,我看到的所有添加新实体的示例都将经过以下步骤:

  1. 创建一堆绑定到屏幕控件的“新”变量。
  2. 当用户想要提交添加时,创建了一个未初始化的新实体。
  3. 将“new-”变量一一复制到新实体的每个成员。
  4. 将新实体推送到经理的实体列表中。
  5. 保存更改。
  6. 清除所有“new-”变量。

由于许多原因,这是有问题的。除了屏幕控制之外,还必须维护这些“新”变量。当服务器端实体更改时,必须手动更改它们。这是耗时且容易出错的。

我希望能够首先创建一个未初始化的新实体,然后立即将其绑定到屏幕控件,而不使用带有“new-”前缀的那些变量。当用户要提交添加时,将新实体推送到经理的实体列表中,然后保存更改。然后立即将屏幕控件绑定到新创建的未初始化实体。

这样,我们可以避免在视图模型中处理单个实体属性,这会产生更健壮的代码,并节省大量时间。

目前,当文档准备就绪时,用于创建新实体的元数据不可用。如果我下载它,我必须先处理异步完成,然后才能将新实体绑定到屏幕控件。

所以我的问题是:有没有办法让元数据与初始 HTML 下载一起下载,这样我就可以创建一个未初始化的新实体而无需等待,并立即将其绑定到屏幕上的 HTML 控件?

4

1 回答 1

2

我不确定未初始化的新实体是什么意思,但是是的-您可以创建例如这样的新车:

var newCar = manager.metadataStore.getEntityType("Car").createEntity();
manager.addEntity(newCar);

将您的控件绑定到 newCar。保存更改呼叫manager.saveChanges();,取消呼叫manager.rejectChanges();

为了能够与实体一起工作,微风需要元数据。如果需要,您可以发送带有页面本身的元数据。然后,您可以使用 manager.importMetadata() 将其导入管理器。唯一的问题是您需要编写一个小应用程序来生成元数据字符串(在构建期间),以便稍后可以将其传递给 importMetadata()。查看MetadataStore 类 API了解更多信息。

于 2012-12-05T10:30:15.410 回答