Как назначить вывод события переменной?

Я хотел бы получить результат события в своем пользовательском интерфейсе.

Вот мой контракт

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, что правильно. Но я хочу получить значение (т.е. 441) в своем пользовательском интерфейсе, поэтому я хочу присвоить его переменной.

Вопрос : Как назначить вывод журнала событий переменной?

присвоить result.args.val.toNumber()вашей переменной?

Ответы (2)

На этот вопрос может быть много разных ответов в зависимости от того, что вы хотите делать с переменными (например, хотите ли вы перезаписать его или сохранить растущий список переменных, поступающих через ваше событие?), но самый простой вариант будет так.

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.