組み立てが完了した後でパーシャルに渡すことができれば、翡翠のパーシャルにうまくレンダリングされるタイトな配列があります。(プリロードすることで確認しました)
私が今抱えている問題はどこにも答えが見つからないということです。アプリを実行すると、配列の組み立て/読み込みが完了するまで配列を使用または表示できません。(スクレイピングされたデータが入力されます)-だから私は配列を構築する関数を実行するために非同期を使用しています。よく働く。-すべてがビルドされたら、関数done()を呼び出して、実際にビルドされたことを確認します-そして、配列をパーシャルに渡したいだけですが、Ajax+を使用しないと実行できないようです。 JSON :(パーシャルにはすでにソリッドイテレーションが組み込まれているため、回避しようとしています。
-アプリがすでに実行された後に(ソケットを使用せずに)パーシャルにデータを入力する簡単な方法を知っている人はいますか?
//in my main app, web.js
//assume I have all the dependencies loaded
//setup an empty array
var items = new Array();
// then run 'fetch' which populates array with scraped data, takes about 10 seconds
app.get('/', function(req, res){
fetch(p.u[0]); //builds the array, returns items[]
res.render('index.jade', {
title: 'my first node.js app',
item: 'items' //what the partial needs, this throws an error if I don't
})
});
//have to use this to avoid initial error due to array being empty/undefined when app
//first starts
var params = {
"namespace": {
"items": [
"an unnecessary value"
]
}
};
//and finally this is what's called once the array is finished assembling itself
function displayItems(){
app.get('/', function(req, res){
req.render('items.jade', {item : 'items'})
})
}
//index.jade
//setup my partial
//script is there to avoid initial error due to array being empty/undefined when app
//first starts
div.list
script
if(namespace.items) {
if(namespace.items.length) {
!= partial('item', items)
}
}
//and my partial, _items.jade
//express docs confirm that jade would iterate over each item in the items array
//with this jade markup
ul.list
li.date #{item.date}
li.descrip #{item.descrip}
li.reas #{item.reas}
li.cmpny #{item.cmpny}
li.photo #{item.photo}