gpt4 book ai didi

javascript - 在 AngularJS 中返回一个值

转载 作者:行者123 更新时间:2023-12-02 15:19:38 24 4
gpt4 key购买 nike

我编写了一个 Angular 服务,它查询数据库并应返回类别:

(function() {
'use strict';
angular.module('budget')
.service('CategoriesService', ['$q', CategoriesService]);

function CategoriesService($q) {
var self = this;
self.loadCategories = loadCategories;
self.saveCategorie = saveCategorie;
self.datastore = require('nedb');
self.db = new self.datastore({ filename: 'datastore/default.db', autoload : true});

function saveCategorie (categorie_name) {
var entry = {name: categorie_name,
type: 'categorie'}
self.db.insert(entry);
};

function loadCategories () {
self.db.find({type: 'categorie'}, function (err, docs) {
var categories = docs;
return categories;
});
};

return {
loadCategories: self.loadCategories,
saveCategorie: self.saveCategorie
};
}
})();

当我在函数 loadCategories() 中使用 console.log 时,它会返回一个包含 6 个对象的数组(数据库中的对象),但在函数之外它只会给我 undefined.

我通过 Controller 使用 CategoriesService.loadCategories() 进行调用

所以我想我可能必须做一些叫做promise的事情,但我对此不确定。

如何从该服务获取实际数据?

最佳答案

首先,您不需要从服务工厂配方中返回任何内容,只需为 this 变量分配一个方法即可。

至少,你需要:

// service.js

self.loadCategories = function() {
var deferred = $q.defer();
db.find({type: 'categorie'}, function (err, docs) {
deferred.resolve(docs);
});

return deferred.promise;
};

// controller.js

service
.loadCategories()
.then(function(categories) {
$scope.categories = categories;
})
;

关于javascript - 在 AngularJS 中返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com