我正在使用流星创建一个 DApp,其中一个 templateVar 显示一个帐户地址。
使用web3
JavaScript 中的函数,我将updateInterface()
如下所示的方法定义为 updateInterface()
但是,由于该方法是一个循环,我似乎无法触发里面的事件Template.foo.events
。该方法有效,因为我能够alert(res)
将结果提醒到屏幕上。
有人能指出我正确的方向吗?干杯
编辑:添加了该template.oncreated
函数,并且该函数updateInterface()
也放置在oncreated
、 助手和事件方法之外。
Template.foo.onCreated(function fooOnCreated() {
this.account= new ReactiveVar(0);
});
Template.foo.helpers({
account() {
var template = Template.instance();
myContract = web3.eth.contract(ABIArray).at(contractAddress);
var result = web3.eth.getCoinbase(function(err, res) {
TemplateVar.set(template, "person", res);
});
},
});
Template.foo.events({
// not sure what to place here
});
var account = web3.eth.accounts[0];
var accountInterval = setInterval(function() {
if (web3.eth.accounts[0] !== account) {
account = web3.eth.accounts[0];
updateInterface();
}
}, 100);
function updateInterface() {
var template = Template.instance();
var result = web3.eth.getCoinbase(function(err, res) {
alert(res);
TemplateVar.set(template, "account", res);
});
}
事件的问题在于它需要一个事件,而元掩码检测功能每100 毫秒检测一次帐户更改,我不确定该updateInterface()
方法的放置位置。
TemplateVar 指向这里。
<head>
<body>
<div id="section">
{{>foo}}
</div>
</body>
</head>
<template name="foo">
<div id="location">
<p>Currently logged in as: {{account}} {{TemplateVar.get
"account"}} </p>
</div>
</template>