好的,所以我创建了我的IndexedDB在创建过程中添加了一些数据,其中包含了' store.put'。 然后关闭连接并重新打开连接以使用游标将数据推送到WinJS绑定列表:
var myData = new WinJS.Binding.List();
myData.push(cursorp.value);
现在我和#34; console.log(myData);"我明白了:
[object Object]
myDataStore.js (70,21)
{
[functions]: ,
__proto__: { },
_binding: undefined,
_currentKey: 1,
_keyMap: {
[functions]: ,
1: {
[functions]: ,
__proto__: { },
data: {
[functions]: ,
__proto__: { },
theDay: "F",
id: 1,
listItemN: "My Note.",
day: "1/10/2016"
},
handle: "1",
key: "1"
},
__proto__: { }
},
_keys: [ ],
_lastNotifyLength: 1,
_listeners: null,
_modifyingData: 0,
_notifyId: 0,
_pendingNotifications: null,
_proxy: undefined,
dataSource: { },
length: 1,
onitemchanged: undefined,
oniteminserted: undefined,
onitemmoved: undefined,
onitemmutated: undefined,
onitemremoved: undefined,
onreload: undefined
}
当我尝试执行ListView时,我得到了带有"未定义"的列表元素。在里面。我已经改变它,以便我得到我想要的所有三个项目:
myData.push(cursorp.value.listItemN, cursorp.value.theDay, cursorp.value.day);
但它做同样的事情,每个元素都有" undefined"在里面。
我只是没有看到如何从此绑定列表中提取数据。
这是我正在创建的模板。它通过命名空间从另一个js文件获取数据的值:
var myListDataInfo = myOwnNamespce.itemList;
var myTemp = (function myTemplate(myPromise) {
return myPromise.then(function(listNote) {
var div = document.createElement("div");
div.className = "myListContainer";
var myListNote = document.createElement("h4");
myListNote.innerText = listNote.myListDataInfo;
div.appendChild(myListNote);
return div;
})
});
任何帮助将不胜感激。 -Rob0
答案 0 :(得分:0)
这就是事情不起作用的原因:
var myData = new WinJS.Binding.List();
处理了,然后创建了命名空间:
var myData = new WinJS.Binding.List();
function loadData(callback) {
//Open new instance of DB
var myDataBase = indexedDB.open("notelist");
myDataBase.onsuccess = function(e) {
var list = e.target.result.transaction("notes", "readwrite");
var myStore = list.objectStore("notes");
myStore.openCursor().onsuccess = function(e) {
var cursorp = e.target.result;
if (cursorp) {
myData.push(cursorp.value);
cursor.continue();
} else {
console.log(myData);
console.log("Gathered Array!");
if (typeof callback === "function") {
callback();
}
};
};
};
};
function createMyNameSpace() {
WinJS.Namespace.define('myOwnNamespce', {
itemList: myData,
});
};
为了使回调工作,我将函数(回调)放在我的onsuccess中以便创建数据库。
myDat.onsuccess = function () {
myLDat = myDat.result;
loadData(createMyNameSpace);
console.log("Database initialized!");
};
如果您查看上面的代码,您可能会看到我正在尝试获取已经通过尝试未定义方法获得的数据。所以模板现在看起来像这样:
var myListDataInfo = myOwnNamespce.itemList; //This is not needed
var myTemp = (function myTemplate(myPromise) {
return myPromise.then(function(listNote) {
var div = document.createElement("div");
div.className = "myListContainer";
var myListNote = document.createElement("h4");
myListNote.innerText = listNote.data.listItemN; //The change is in this line.
div.appendChild(myListNote);
return div;
})
});
我还发现this文章有助于理解回调。
希望这有帮助。
编辑更新
添加了var myData = new WinJS.Binding.List();到代码。请注意,代码在匿名函数中。
编辑更新