我正在使用EJS模板來渲染頁面。我用來呈現網頁的數據是從Firebase數據存儲區拉出的對象。如何從嵌套函數中返回對象?高階函數
訪問數據存儲的方法是utils
對象的屬性。數據從Firebase中提取,數據存儲中的每個元素都添加到box
陣列中。
pullFromFirebase()
的結果設置爲另一個js文件中定義的data
變量。我希望Firebase返回的對象框可用於data
。最終會將data
饋送到我的模板的呈現方法中。
嘗試訪問utils.box
通過data
變量返回undefined
頁面加載時。我知道box
包含來自Firebase的元素;如果我在for
循環後console.log(box);
pullFromFirebase
中,則返回框內容。
同樣,如果從控制檯調用pullFromFirebase
與的內容也返回。從調音臺呼叫data();
也會返回box
。
如何通過data();
以編程方式訪問從pullFromFirebase
返回的對象?
// file1.js
var db = new Firebase('firebaseURL');
var data = utils.pullFromFirebase(); // data(); returns 'undefined'
// file2.js
var utils = {
pullFromFirebase: function() {
db.on("value", function(snapshot) {
var notebook = snapshot.val();
var box = [];
for (list in notebook) {
box.push(notebook[list]);
}
utils.box = box;
});
return utils.box;
}
};
的utils
回報的任何其他屬性成功。只有box
對象不被返回。如果我console.dir(utils);
我看到box
作爲屬性utils
及其值。所以我當我看到box
我無法觸摸box
。