有一些关于此的帖子,但在我的项目中没有具体的内容。
我阅读了Breeze关于扩展实体的文档,但他们使用了淘汰赛,我使用的是Angular。
我在服务器上定义了一个自定义属性,它正在我的JSON中传递。
然而,Breeze js ingnores it因为它没有元数据。
我需要在客户端上定义元数据,以便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的实际值填充什么?
答案 0 :(得分:0)
如果不像PWKad建议那样使用camelCasing,那么请在http://www.breezejs.com/samples/breezeangular-template查看Breeze Angular SPA模板的breeze文档。该链接中有一个名为“在客户端上扩展实体定义”的部分。
如果我理解正确,您的“商家”对象带有“MyProp”计算属性。试试这个
store.registerEntityTypeCtor("Merchant",Merchant, merchantInitializer);
function Merchant(){
this.MyProp="";
}
答案 1 :(得分:0)
好吧,这似乎是Breeze中的一个错误。您实际上必须编辑breeze.js文件才能使其正常工作。我从来没有想到这是一个错误。
我在这里找到了答案:
Breeze Extended Entity Property Only Loads on Second Query
<强>更新强>
今天我更新到了最新版本的breeze.js,这个bug已经不存在了。所以这基本上是无缘无故的痛苦。谢谢大家的帮助。如果由于某种原因无法更新,请使用上面的链接。