[英]Web3js - Pressing a button and trigger function
我在前端使用web3js庫與智能合約后端連接
請參閱下面的代碼:
App = {
web3Provider: null,
contracts: {},
init: function () {
return App.initWeb3();
},
initWeb3: function () {
// Is there an injected web3 instance?
if (typeof web3 !== 'undefined') {
App.web3Provider = web3.currentProvider;
} else {
// If no injected web3 instance is detected, fall back to Ganache
App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
}
web3 = new Web3(App.web3Provider);
return App.initContract();
},
initContract: function () {
$.getJSON('CryptoSportsToken.json', function (data) {
// Get the necessary contract artifact file and instantiate it with truffle-contract
var CryptoSportsTokenArtifact = data;
App.contracts.CryptoSportsToken = TruffleContract(CryptoSportsTokenArtifact);
// Set the provider for our contract
App.contracts.CryptoSportsToken.setProvider(App.web3Provider);
});
return App.createPerson();
},
/*
bindEvents: function () {
var owner = $('#owner').val();
var name = $('#name').val();
var price = $('#price').val();
console.log("App: \n");
console.log(App);
console.log("App.contracts: \n");
console.log(App.contracts);
console.log(owner + " " + name + " " + price)
//createPromoPerson(address _owner, string _name, uint256 _price)
$(document).on('click', '.btn-create', App.createPromoPerson(owner, name, price));
},
*/
createPerson: function () {
console.log("lolonator")
var cryptosportInstance;
//##########
$(document).on('click', '.btn-create', function () {
var owner = $('#owner').val();
var name = $('#name').val();
var price = $('#price').val();
console.log(owner + " " + name + " " + price)
App.contracts.CryptoSportsToken.deployed().then(function (instance) {
cryptosportInstance = instance;
console.log(cryptosportInstance)
return cryptosportInstance.createPromoPerson(owner, name, price).call();
}).catch(function (err) {
console.log(err.message);
})
});
},
};
$(function () {
$(window).load(function () {
App.init();
});
});
在我的前端中,我有一個按鈕,應該會觸發一個新人的創建:
<div class="container">
<h1>Sports Person</h1>
<label for="owner" class="col-lg-2 control-label">Owner Address: </label>
<input id="owner" type="text" />
<br/>
<label for="name" class="col-lg-2 control-label">Name: </label>
<input id="name" type="text" />
<br/>
<label for="price" class="col-lg-2 control-label">Price: </label>
<input id="price" type="text" />
<br/>
<button class="btn btn-default .btn-create" type="button" data-id="0">Create</button>
</div>
當我按下按鈕時,我基本上沒有任何結果。 沒有console.log
被觸發。
請參閱以下來自chrome的console.log:
有什么建議嗎?
感謝您的答復!
您的HTML中的“創建”按鈕類之一中有錯字。 代替:
<button class="btn btn-default .btn-create" type="button" data-id="0">
它應顯示為:
<button class="btn btn-default btn-create" type="button" data-id="0">
這是因為.btn-create
於$(document).on('click', '.btn-create', function () {
實際上是一個CSS類選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.