如何在没有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的实际值填充?

如何在没有KO的情况下为未映射的实体属性扩展Breeze MetaData

如果 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该错误不再存在。 所以这基本上是无缘无故的很多痛苦。 谢谢大家的帮助。 如果由于某种原因无法更新,请使用上面的链接。