有了solidity和Web3,当我尝试做myEvent.get()时,我得到的只是myEvent:undefined



这是我的JS脚本中获取事件的部分:

EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' }).get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('setEvent: ' + JSON.stringify(eventResult.args));
});
}

这是我的合同脚本:

pragma solidity ^0.4.18;
contract EthProj {

string fName;
string age;

event Message(string name, string age);

function setMessage(string _fName, string _age) public {
fName = _fName;
age = _age;

emit Message(_fName, _age);
}

function getName() public constant returns (string) {
return (fName);
}

function getMessage() public constant returns (string) {
return (age);
}
}

当我调用setMessage时,我被未定义。我不知道我做错了什么。谁能帮忙?是我没有正确获取事件,还是根本没有设置它们?

在返回任何内容之前,您必须对事件启动watch。在watch运行时,您可以在新事件传入时接收新事件,也可以使用get再次重新检索事件。

var events = EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' });
events.watch((error, results) => {
console.log(results); // Will show a single event object
});
events.get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('Event count: ' + eventResult.length); // Notice object returned is an array
eventResult.forEach(element => console.log('setEvent: ' + JSON.stringify(element)));
});

相关内容

  • 没有找到相关文章

最新更新