2016-08-21 7 views
0

Я пытаюсь получить метаданные, прежде чем выполнять какие-либо запросы на странице, потому что каждый запрос пытается получить метаданные в общей сложности 5 раз и страница очень медленная. Я надеюсь, что это поможет.BreezeJs загружает метаданные 5 раз на странице, пытаясь использовать fetchMetaData, но это ошибки

// Информация о версии: вар ветер = { версия: "1.5.4", metadataVersion: "1.0.5" };

Howevever Я получаю эту ошибку:.

manager.fetchMetadata (...), то (...) не является не функцией

Вот пример кода:.

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; 
} 

Вот как выглядит функция createManager из введенной службы emProvider.

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

попробовать следующее ... окружать все ваши блоки кода с анонимным самоосуществляющимся функцием для создания мастера-менеджера, за исключением, закомментировать функцию GetMetadata, убедитесь, что подобрать правильный адаптер для подключения к службе. .. breeze odata configuration, убедитесь, что 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) {... 
})(); 
0

Если вы используете $q от AngularJS, вы должны использовать .catch вместо .fail. AngularJS uses .catch за ошибки в обещаниях.