我有一個使用Breeze的Angular應用程序,並且有一個用於我的不同控制器的共享EntityManager。可以在不執行查詢來預填充EntityManager的MetadataStore的情況下訪問我的一些控制器。我發現開始方向here表示在應用程序開始時獲取元數據。我的項目基於Angular-Breezejs模板,當我嘗試執行以下操作時,出現錯誤,因爲在使用datacontext之前,promise沒有完全解析。Breezejs,如何使用共享EntityManager開始獲取元數據
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
在元數據提取完成之前阻塞的正確方法是什麼?由於似乎沒有必要在每個非查詢功能(包括實體創建)之前檢查元數據是否存在,如上面鏈接問題的原始海報最終所做的那樣。
這應該更新。 fetchMetadata需要一個Dataservice參數 – cecilphillip
不,它不。你正在考慮'MetadataStore.fetchMetadata'。這是'EntityManager.fetchMetadata'。 – Ward