流星js |通过帮助器显示视图中的Json
Meteor js | Display Json in view via helper
我正在努力解决使用Meteor JS的问题。
我调用一个api,它返回一个Json数组,看起来像这个url返回的数组(我没有把整个数组放在这里,因为大小的原因):https://blockchain.info/address/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX?format=json&offset=0
我把它叫做服务器端:
if (Meteor.isServer) {
Meteor.methods({
getWalletPreviousTx: function() {
var url = "https://blockchain.info/address/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX?format=json&offset=0";
var result = Meteor.http.get(url);
if(result.statusCode==200) {
var tx = JSON.parse(result.content);
return tx;
} else {
console.log("Response issue: ", result.statusCode);
var errorJson = JSON.parse(result.content);
throwError("Couldn't fetch wallet balance from Blockchain, try again later !");
}
}
});
}
和我检索它到我的视图通过一个助手在一个特定的模板:
Template.wallet.helpers({
addrTxs: function () {
Meteor.call('getWalletPreviousTx', function(err, tx) {
console.log(tx);
return [tx];
});
}
});
helper中的console.log实际上记录了我的Json数组,这意味着它可以访问它。现在我挣扎的部分是检索这个Json到我的视图,我已经尝试了很多方法,没有一个工作,实际上我有这个在我的视图:
<template name="wallet">
<table>
{{#each addrTxs}}
<ul>
{{> addrTx}}
</ul>
{{/each }}
</table>
</template>
我想显示的Json部分是每个事务的"addr"answers"value":
"inputs":[
{
"sequence":4294967295,
"prev_out":{
"spent":true,
"tx_index":97744124,
"type":0,
"addr":"1AWAsn8rhT555RmbMDXXqzrCscPJ5is5ja",
"value":50000,
"n":0,
"script":"76a914683d704735fd591ba9f9aebef27c6ef00cbd857188ac"
}
}
]
事实是,我从来没有设法显示任何从这个Json数组在我的视图,甚至把它直接在我的视图不显示任何东西:
{{addrTxs}}
我做错了什么?有人能帮我吗?
感谢您的阅读。
----------------------- 编辑 ---------------------
我认为问题更多的是我的助手和模板在api调用完成之前加载(因为console.log出现在我的控制台中,就像我的页面渲染后3秒)。我怎么能让我的助手等待,直到api调用完成之前渲染它在视图中?我用的是铁的。
我试图在我的路由上添加一个waitOn动作,以便等待,直到我的api调用完成:
Router.route('/wallet', {
name: 'wallet',
template: 'wallet',
loadingTemplate: 'loading',
waitOn: function () {
Meteor.call('getWalletPreviousTx', function(error, result) {
if(!error) {
Ready.set(result)
}
});
return [
function () { return Ready.get(); }
];
},
action: function () {
if (this.ready())
this.render();
else
this.render('loading');
}
});
上面的代码与waitOn动作似乎工作(我没有错误),但我不知道如何显示在我的视图中的具体结果:
if(!error) {
Ready.set(result)
}
事务包含在tx中。Txs ,遍历它。
Template.wallet.helpers({
addrTxs: function () {
Meteor.call('getWalletPreviousTx', function(err, tx) {
console.log(tx);
return tx.txs;
});
}
});
你是对的,你需要使用会话变量与异步调用。
首先,调用创建的方法:
Template.wallet.created = function () {
Meteor.call('getWalletPreviousTx', function(err, tx) {
console.log(tx.txs);
Session.set('tx', tx.txs);
});
};
Helper应该是这样的:
Template.wallet.helpers({
addrTxs: function () {
return Session.get('tx');
}
});
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- FF视图源|脚本高亮显示为红色
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何在MVC3中显示鼠标悬停在文本上的部分视图
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 为什么我的视图没有显示在角度ui视图中
- 使用PhoneGap和jQuery Mobile在android设备上显示动态列表视图
- 使用Ruby数组使用JS在视图中进行迭代和显示
- 滑动视图 - 显示下一项的预览/片段
- 在剃须刀应用程序中将视图显示为灯箱
- ember.js如何为视图显示不同的筛选列表?复杂的设置
- ng重复视图显示与JSON数据不对应
- RedirectToAction之后没有视图显示
- ASP.. NET MVC控制器/视图显示本地时间
- 离子弹出窗口视图显示在离子模态视图后面
- WinJs列表视图显示:无带ID的tile
- 完整的日历视图显示goToDate分前,下和今天
- 如何从父数组视图显示子对象视图
- CouchApp视图显示将为空结果
- 在树状视图显示中只打开一个li节点