0

有一些关于此的帖子,但在我的项目中没有任何具体的内容。

我在 Breeze 上阅读了有关扩展实体的文档,但他们使用淘汰赛,而我正在使用 Angular。

我在服务器上定义了一个自定义属性,它正在我的 JSON 中传递。

但是,Breeze js 忽略了它,因为它没有元数据。

我需要在客户端上定义元数据,以便 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 示例,但我确实有一个 DB,它也使用 KO。

更新:

好的。所以我发现了一些部分有效的东西。默认值现在显示在视图上。但是,JSON 中的值没有被填充。它始终使用默认值。

这就是我现在所拥有的:

var Merchant = function () {
    this.MyProp = "5";
};
store.registerEntityTypeCtor("Merchant", Merchant);

MyProp 需要发生什么才能被 JSON 中的实际值填充?

4

2 回答 2

0

如果像 PWKad 建议的那样,camelCasing 不是您的情况,那么请在此处查看 Breeze Angular SPA 模板的微风文档http://www.breezejs.com/samples/breezeangular-template。该链接中有一个部分称为“在客户端扩展实体定义”。

如果我理解正确,您有一个带有“MyProp”计算属性的“Merchant”对象。尝试这个

store.registerEntityTypeCtor("Merchant",Merchant, merchantInitializer);

function Merchant(){
 this.MyProp="";
}
于 2013-09-22T12:25:46.860 回答
0

好吧,这似乎是 Breeze 中的一个错误。实际上,您必须编辑微风.js 文件才能使其正常工作。我永远不会认为这是一个错误。

我在这里找到了答案:

Breeze 扩展实体属性仅在第二个查询时加载

更新:

今天我更新到了最新版的breeze.js,这个bug已经不存在了。所以这基本上是无缘无故的很多痛苦。感谢大家的帮助。如果由于某种原因无法更新,请使用上面的链接。

于 2013-09-22T22:22:17.003 回答