Я пытаюсь настроить службу данных в своем приложении Angular, использующем breezeJS. После того, как я выполняю свое обещание, я не могу получить файл .then в своем контроллере. Я получаю данные из своей базы данных через ветер в моей службе данных. Я мог бы просто вернуть обещание бриза, но я хочу иметь возможность использовать $q.all, чтобы узнать, когда все мои данные будут найдены.
В моем контроллере`
ProApp.controller('caseInfoController', function caseInfoController($scope, $log, $timeout, caseDataService) {
/***initialize data ***/
// initializeApp();
ATPinitializeApp();
function ATPinitializeApp() {
$scope.MyStateList= caseDataService.getAllStates()
.then(function assignStates(data) {
$log.info("THIS THEN WILL NOT FIRE");
});
}
`
Вышеупомянутое затем не сработает, когда обещание от службы данных будет выполнено.
ProApp.factory('caseDataService', function ($log, $q)
{
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
var servicename = "http://localhost:60882/breeze/SPLBreeze";
var manager = new breeze.EntityManager(servicename);
var caseDataService =
{
getAllStates: getAllStates,
};
return caseDataService;
/*** implementation details ***/
function getAllStates()
{
var myStatePromise = $q.defer();
var query = breeze.EntityQuery
.from("state");
manager.executeQuery(query)
.then(function (data) {
$timeout(function () { myStatePromise.resolve(data); }, 200);;
});
return myStatePromise.promise;
};
Любая помощь будет принята с благодарностью. Я не уверен на 100%, правильно ли настроены обещания $q. В конце концов я хотел бы использовать $q.all, чтобы определить, когда массив различных обещаний был разрешен, чтобы я мог обновить сообщение для пользователя. Я читал, что мне нужно использовать тайм-аут, чтобы получить angular, чтобы понять, что изменение произошло в следующем цикле событий.