Angular Factory возвращает ноль, но показывает результат в консоли

0

У меня есть заводская служба и здесь метод getCount. Когда я вызываю этот метод в своем контроллере, он возвращает null, но я протестировал его на своей фабричной службе, распечатав данные в консоли. Он показывает данные в консоли, но не возвращает никакого значения моему контроллеру.

obj.getCount = function(table, field) {
        var query = "select count(" + field + ") as total from " + table + "";
        $db.query(query).then(function(results) {
            console.log(results.rows.item(0).total); // here show data in console
            if (results.rows.item(0).total) {
                return results.rows.item(0).total;
            } else {
                return 0;
            }

        });
    }

В моем контроллере

$scope.totalAccount=DBFactory.getCount('accounts','id');
  • 0
    $ db.query (query) .then является асинхронной функцией, поэтому вы не можете использовать return для получения результата, вы можете использовать Promise.
Теги:

1 ответ

2
Лучший ответ

Верните $db.query.then так:

obj.getCount = function(table, field) {
    var query = "select count(" + field + ") as total from " + table + "";
    return $db.query(query).then(function(results) {
        if (results.rows.item(0).total) {
            return results.rows.item(0).total;
        } else {
            return 0;
        }
    });
}

Затем измените код контроллера на:

DBFactory.getCount('accounts','id').then(function(data) {
    $scope.totalAccount = data;
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню