如何在没有KO的情况下为未映射的实体属性扩展Breeze MetaData
本文关键字:实体 映射 属性 扩展 MetaData Breeze 情况下 KO | 更新日期: 2023-09-27 18:32:11
有一些关于这个的帖子,但没有具体的东西在我的项目中有效。
我在 Breeze 上阅读了有关扩展实体的文档,但它们使用挖空,而我使用的是 Angular。
我已经在服务器上定义了一个自定义属性,它正在我的 JSON 中传递。
但是,Breeze js ingnored 它,因为它没有元数据。
我需要在客户端上定义元数据,以便 Breeze 可以读取属性。
这是我到目前为止拥有的客户端,但它不起作用。 通过不工作...我的意思是当我用{{item调用它时。MyProp}} 屏幕上不会显示任何内容。 但是,实际元数据中的所有其他属性都显示得很好。
configureBreeze();
var serviceName = 'api/Entity';
var manager = new breeze.EntityManager(serviceName);
manager.enableSaveQueuing(true);
var store = manager.metadataStore;
addMyPropType(store);
function addMyPropType(store) {
store.registerEntityTypeCtor("Merchant", MyProp);
}
// custom Merchant constructor
var MyProp= function () {
//'MyProp' is a server-side calculated property of the Merchant class
// This unmapped property will be empty for new entities
// but will be set for existing entities during query materialization
this.MyProp= "test";
};
var dataservice = {
store: store,
List: List,
Create: Create,
ListDetail: ListDetail,
Save: Save
};
return dataservice;
我已经准备好了 NODB 示例,但我确实有一个数据库,它也使用 KO。
更新:
还行。 所以我找到了一些部分有效的东西。 默认值现在显示在视图上。但是,未填充 JSON 中的值。 它始终使用默认值。
这就是我现在拥有的:
var Merchant = function () {
this.MyProp = "5";
};
store.registerEntityTypeCtor("Merchant", Merchant);
MyProp需要发生什么才能由JSON的实际值填充?
如果 camelCasing 不是 PWKad 建议的情况,请查看 Breeze Angular SPA 模板的 breeze 文档 此处 http://www.breezejs.com/samples/breezeangular-template .该链接中有一个名为"在客户端上扩展实体定义"的部分。
如果我理解正确,您有一个带有"MyProp"计算属性的"商家"对象。试试这个
store.registerEntityTypeCtor("Merchant",Merchant, merchantInitializer);
function Merchant(){
this.MyProp="";
}
好吧,这似乎是微风中的一个错误。 您实际上必须编辑 breeze.js 文件才能使其正常工作。 我从没想过这是一个错误。
我在这里找到了答案:
Breeze 扩展实体属性仅在第二次查询时加载
更新:
今天我更新到最新版本的微风.js该错误不再存在。 所以这基本上是无缘无故的很多痛苦。 谢谢大家的帮助。 如果由于某种原因无法更新,请使用上面的链接。