Solidity
如何將事件輸出分配給變數?
我想在我的 UI 中獲取事件結果。
這是我的契約
pragma solidity ^0.4.4; contract T2{ uint public k; event CheckVal(uint val); function Test() returns (uint){ var temp=441; CheckVal(temp); k=32; return temp; } }
在控制台中我有這個:
var eve=instance.CheckVal(); eve.watch(function(error, result){console.log( result.args.val.toNumber());});
每次我跑
instance.Test({from:eth.accounts[0],gass:4200000})
441出現在控制台中,沒錯。但我想在我的 UI 中獲取值(即 441),所以我想將它分配給一個變數。
問題:如何將事件日誌的輸出分配給變數?
這個問題可能有很多不同的答案,具體取決於您想對變數做什麼(比如您想覆蓋它,還是儲存通過您的事件傳入的不斷增長的變數列表?),但最簡單的版本是像這樣。
var eve=instance.CheckVal(); var storedValue; eve.watch(function(error, result){ storedValue = result; });
現在,如果您註銷 storedValue,它將返回 441。
就這麼簡單:
var eventOutput var eve = instance.CheckVal(); eve.watch(function(error, result){ eventOutput = result.args.val.toNumber() });
當然,您需要在前端以某種方式使用該輸出以使其可見,例如,如果這是一個 React 應用程序,則將其保存在狀態中。