我在页面上执行任何查询之前尝试获取元数据,因为每个查询都试图获取元数据总共5次并且页面非常慢。我希望这有帮助。
//版本信息: var breeze = { 版本:" 1.5.4", metadataVersion:" 1.0.5" };
然而我收到此错误:
manager.fetchMetadata(...)。then(...)。fail不是函数
以下是代码示例:
var manager = emProvider.createManager();
function getMetaData()
{
var deferred = $q.defer();
manager.fetchMetadata()
.then(function (data, status) {
deferred.resolve(data);
console.log('manager.fetchMetadata() success');
})
.fail(function (data, status) {
deferred.reject(data);
console.log('manager.fetchMetadata() reject');
});
return deferred.promise;
}
这就是注入的&#em; emProvider'中的createManager功能。服务。
var masterManager = new breeze.EntityManager(serviceRoot + 'odata/');
// private function to create a new manager
function createManager() {
var manager = masterManager.createEmptyCopy(); // same configuration; no entities in cache.
// ... copy in some entities (e.g.,picklists) from masterManager
return manager;
}
答案 0 :(得分:0)
尝试以下操作...使用匿名自调用函数包围所有代码块,除了创建主管理器,注释掉getMetaData函数,确保为您的服务选择正确的适配器... {{ 3}},确保Q位于页面顶部的js包上。
breeze.config.initializeAdapterInstance("dataService", "odata");
var masterManager = new breeze.EntityManager(serviceRoot + 'odata/');
(function () {
var op = breeze.FilterQueryOp;
var query = null;
query = new breeze.EntityQuery()...
...all of your other breeze code...
masterManager.executeQuery(query).then(function (data) {...
})();
答案 1 :(得分:0)
如果您使用的是AngularJS中的$q
,则应使用.catch
代替.fail
。 AngularJS uses .catch承诺中的错误。