注意:我是骨干js的新手
当页面加载时,会调用Model.fetch()并更新视图。我想改为点击按钮。
HTML:
<div class="col-md-4">
<button type="button" id="btnMiningInfo" class="btn btn-default btn-lg">Mining Info</button>
<div class="highlight" id="miningInfo"></div>
</div>
查看:
var MiningInfoView = Backbone.View.extend({
id:'info',
class:'table table-hover',
template:_.template('<table><tbody><tr><td><span>Number Of Blocks</span></td>'+
'<td><span><%= blocks %> </span></td>'+
'</tr></tbody></table>'),
initialize: function() {
//this.model.on('change', this.render, this);
},
render: function() {
var attributes = this.model.toJSON();
this.$el.html(this.template(attributes));
}
});
var miningView = new MiningInfoView({model: miningModel});
miningView.render();
$('#miningInfo').html(miningView.el);
这里我注释掉了initialize
函数来阻止它在页面加载时获取模型。
模型
var MiningModel = Backbone.Model.extend({
url:'http://localhost:3000/getMiningInfo',
defaults: {
blocks: "",
},
parse: function(resp) {
return resp;
}
});
var miningModel = new MiningModel();
miningModel.fetch();
$("#btnMiningInfo").click(function(){
miningModel.fetch();
});
答案 0 :(得分:1)
也许你只需要删除其中一个获取调用:
var miningModel = new MiningModel();
//Remove this fetch
miningModel.fetch();
这将在代码的这部分执行时获取模型。但似乎您希望挖掘模型在点击时获取,您已在此处实现:
$("#btnMiningInfo").click(function(){
miningModel.fetch();
});