【发布时间】:2014-08-01 14:25:23
【问题描述】:
我对 JS 函数的范围和/或 Angularjs 承诺和 $q 有疑问。我查了一些例子,但我根本没有得到它。
在我的应用程序中,我在浏览器的 indexeddb 中保存了一些数据。在前端有一个具有自动完成功能的输入字段。输入字段的值转到我的 angularjs 控制器并调用一个函数。该函数应返回找到的值。从 indexeddb 中查找值的逻辑运行良好。
问题是我在值被推入数组之前返回了我的数组。所以我不确定是否需要更改 JavaScript 范围内的一些东西或使用 Angularjs 的东西。
这是我的控制器:
var AutocompleteController = function($scope, $http, $q) {
$scope.getCodeFromDB = function(val) {
var codes = [];
var openDbRequest = indexedDB.open('testDb', 1);
openDbRequest.onsuccess = function (e) {
var db = e.target.result;
var transaction = db.transaction("codeobjekt");
transaction.objectStore("codeobjekt")
.openCursor(IDBKeyRange.bound(val, val + '\uffff'))
.onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
codes.push(cursor.value.code); //gets filled
console.log(cursor.value.code);
cursor.continue();
}
};
};
console.log(codes); //is empty
return codes;
};
};
提前致谢。
【问题讨论】:
标签: javascript angularjs indexeddb