2013-04-22 61 views
0

时候当我调用下面的代码提取元数据:breezejs创建一个新的实体

function createMandat (initialValues) { 
     return manager.createEntity('Mandate'); 
} 

它失败,因为类型“任务”是未知的。我的理解是因为当我调用这个函数时我还没有取得任何这种类型的实体。

所以我的问题是,如果metadataStore没有类型的知识,我如何强制往返服务器以获取此类型的元数据?我的代码中这样做的最佳位置是什么?

回答

2

您可以拨打manager.fetchMetadata然后执行您的createEntity承诺解决后调用。

manager.fetchMetadata().then(function() { 
    var newMandate = manager.createEntity("Mandate"); 
    ... 
}); 

你不需要做这个,如果你第一次执行查询,因为查询执行隐含做了fetchMetadata如果它不能执行查询之前发现的元数据。所以下面也会起作用。

manager.executeQuery(myQuery).then(function(data) { 
    results = data.results; 
    var newMandate = manager.createEntity("Mandate"); 
    ... 
}); 
+0

我没有注意到fetchMetadata()函数...谢谢!其实有没有办法检测到fetchMetadata的调用是必需的?换句话说,我可以检测到元数据尚未加载吗? – Sam 2013-04-22 17:24:00

+0

是的。查看[MetadataStore.hasMetadataFor](http://www.breezejs.com/sites/all/apidocs/classes/MetadataStore.html#method_hasMetadataFor) – Ward 2013-04-22 17:31:11

+0

不错。谢谢 – Sam 2013-04-23 08:49:18

相关问题