Tôi có ứng dụng Góc sử dụng Breeze và có một EntityManager dùng chung cho các bộ điều khiển khác nhau của tôi. Có thể tiếp cận một vài bộ điều khiển của tôi mà không cần thực hiện truy vấn để điền trước MetadataStore của EntityManager. Tôi đã tìm thấy phần nào của hướng bắt đầu here để tìm nạp siêu dữ liệu ở đầu ứng dụng. Dự án của tôi dựa trên mẫu Angular-Breezejs và khi tôi thử làm như sau, tôi nhận được lỗi vì lời hứa không được giải quyết hoàn toàn trước khi một cái gì đó sử dụng datacontext.Breezejs, Cách lấy siêu dữ liệu khi bắt đầu với EntityManager được chia sẻ
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
Cách thích hợp để chặn cho đến khi tìm nạp siêu dữ liệu hoàn tất là gì? Vì có vẻ như không cần thiết phải kiểm tra xem siêu dữ liệu có tồn tại trước mỗi chức năng không phải truy vấn (bao gồm tạo đối tượng) như áp phích gốc của câu hỏi được liên kết ở trên đã kết thúc hay không.
Điều này sẽ được cập nhật. fetchMetadata yêu cầu tham số Dataservice – cecilphillip
Không có thông số nào. Bạn đang nghĩ đến 'MetadataStore.fetchMetadata'. Đây là 'EntityManager.fetchMetadata'. – Ward