为啥我可以在一个功能中访问我的合同,但不能在另一个功能中访问我的合同
Posted
技术标签:
【中文标题】为啥我可以在一个功能中访问我的合同,但不能在另一个功能中访问我的合同【英文标题】:Why I can access my contract in one function but not another one为什么我可以在一个功能中访问我的合同,但不能在另一个功能中访问我的合同 【发布时间】:2020-07-30 15:13:12 【问题描述】:如果标题有点混乱,我很抱歉。
我正在开发带有智能合约的以太坊区块链。
App=
createVoter1: function()
App.contracts.Voting.deployed().then(function(instance)
// use the contract function createBallot
var college = $("#college1").text();
var major = $("#major1").text();
var expirydate = $("#expirydate").text();
var serialnumber = $("#serialnumber1").text();
instance.createVoter(web3.eth.accounts[0],major,college,expirydate,serialnumber,"",[]);
)
,
ifVoterAddressExists: function()
App.contracts.Voting.deployed().then(function(instance)
instance.ifVoterAddressExists(web3.eth.accounts[0]);
)
我在 createVoter1 函数之前跳过了一些代码。问题是,createVoter1 函数可以成功使用合约的函数。但是,当我使用 ifVoterAddressExists 时,会出现 Uncaught TypeError: Cannot read property 'deployed' of undefined 的警告。我可以知道是否有任何可能的解决方案?谢谢!
【问题讨论】:
【参考方案1】:您的代码在部署之外执行。您需要先等待合约部署完成。
【讨论】:
感谢您的回答。您能否进一步解释我如何“等待部署合约”?以上是关于为啥我可以在一个功能中访问我的合同,但不能在另一个功能中访问我的合同的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 history.push 在一个功能中起作用,而在另一个功能中起作用?
执行 Select-AzureRmSubscription 可以从我的一台(客户端)机器上运行,但不能在另一台机器上运行
为啥我可以在 viewDidAppear 中访问 Core Data 实体,但不能在 viewDidLoad 中访问?