到目前为止,我在添加新实体时看到的所有示例都将执行以下步骤:
由于许多原因,这是有问题的。除了屏幕控制之外,还必须维护这些“新”变量。当服务器端实体更改时,必须手动更改它们。这非常耗时且容易出错。
我希望能够首先创建一个未初始化的新实体,并立即将其绑定到屏幕控件上,而不使用带有“new-”前缀的那些变量。当用户想要提交添加内容时,将新实体推送到经理的实体列表中,然后保存更改。然后立即将屏幕上的控件绑定到新创建的未初始化实体。
这样,我们可以避免在视图模型中处理单个实体属性,从而产生更强大的代码,并节省大量时间。
现在,当文档准备就绪时,用于创建新实体的元数据不可用。如果我下载它,我必须处理异步完成,然后才能将新实体绑定到屏幕控件上。
所以我的问题是:有没有办法通过初始HTML下载下载元数据,这样我就可以在不等待的情况下创建一个未初始化的新实体,并立即将其绑定到屏幕上的HTML控件上?
答案 0 :(得分:2)
我不确定未经初始化的新实体是什么意思,但是 - 你可以创建一个像这样的新车:
var newCar = manager.metadataStore.getEntityType("Car").createEntity();
manager.addEntity(newCar);
将控件绑定到newCar。要保存更改,请致电manager.saveChanges();
,取消致电manager.rejectChanges();
为了能够与实体合作,breeze需要元数据。如果需要,您可以使用页面本身发送元数据。然后,您可以使用manager.importMetadata()将其导入管理器。唯一的问题是您需要编写一个小应用程序来生成元数据字符串(在构建期间),以便以后可以将其传递给importMetadata()。请查看MetadataStore Class API以获取更多信息。