我有一个使用 Breeze 的 Angular 应用程序,它为我的不同控制器提供了一个共享的 EntityManager。无需执行查询即可访问我的一些控制器以预填充 EntityManager 的 MetadataStore。我在这里找到了一个起始方向,即在应用程序开始时获取元数据。我的项目基于 Angular-Breezejs 模板,当我尝试执行以下操作时出现错误,因为在某些东西使用数据上下文之前,promise 没有完全解决。
app.factory('datacontext',
['breeze', 'Q', 'model', 'logger', '$timeout',
function (breeze, Q, model, logger, $timeout) {
logger.log("creating datacontext");
configureBreeze();
var manager = new breeze.EntityManager("/api/app");
manager.enableSaveQueuing(true);
var datacontext = {
metadataStore: manager.metadataStore,
saveEntity: saveEntity,
getUsers: getUsers,
getUser: getUser,
createUser: createUser,
deleteUser: deleteUser
};
return manager.fetchMetadata()
.then(function () {
model.initialize(datacontext);
return datacontext;
})
.fail(function (error) {
console.log(error);
return error;
});
//Function definitions
在元数据获取完成之前阻塞的正确方法是什么?因为似乎没有必要在每个非查询功能(包括实体创建)之前检查元数据是否存在,就像上面链接问题的原始海报最终做的那样。