Я создаю DApp с помощью метеора, в котором templateVar отображает адрес учетной записи.
Используя функцию web3
в JavaScript, я определил метод updateInterface()
, как показано ниже как updateInterface ()
Однако, поскольку метод является циклом, я не могу вызвать событие внутри Template.foo.events
. Метод работает, так как я могу alert(res)
предупредить результат на экране.
Может ли кто-нибудь указать мне правильное направление? веселит
РЕДАКТИРОВАНИЕ: добавлена функция template.oncreated
, а также функция updateInterface()
находится вне методов oncreated
, helper и events.
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>