BreezeJs在页面上加载元数据5次,试图使用fetchMetaData但是它有错误

时间:2016-08-21 20:55:22

标签: angularjs breeze

我在页面上执行任何查询之前尝试获取元数据,因为每个查询都试图获取元数据总共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;
    }

2 个答案:

答案 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代替.failAngularJS uses .catch承诺中的错误。