Backbone:单击按钮调用模型获取

时间:2014-02-23 22:49:51

标签: javascript jquery backbone.js

  

注意:我是骨干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();
});

1 个答案:

答案 0 :(得分:1)

也许你只需要删除其中一个获取调用:

var miningModel = new MiningModel();

//Remove this fetch
miningModel.fetch();

这将在代码的这部分执行时获取模型。但似乎您希望挖掘模型在点击时获取,您已在此处实现:

$("#btnMiningInfo").click(function(){
    miningModel.fetch();
});