2

我是 Backbone JS 的新手,遇到了一个问题。

我在网页上有一个按钮。单击按钮后,将输出属性“msg”

<script>
    var m = Backbone.Model.extend({
        initialize: function(options){
            console.log("A view item is created");
        },
        default: function(){
            return{
                msg: "hello world",
                num: 1000
            };
        }
    });

    var v = Backbone.View.extend({
        el: $("body"),
        events: {
            "click #b": "outputMsg"
        },
        outputMsg: function(model){
            $("#d").append(model.get('msg'));
        }
    });

    var test = new v;
</script>

但是调试器显示 $("#d").append(model.get('msg')); 上有问题

我该如何解决?谢谢!

4

2 回答 2

1

outputMsg不会收到您的模型作为参数。当你实例化你的视图时,你需要给你的模型一个参考。此外,您没有实例化任何模型。所以...

var v = Backbone.View.extend({
    el: $("body"),
    events: {
        "click #b": "outputMsg"
    },
    outputMsg: function(){
        this.$("#d").append(this.model.get('msg')); // get the model with this.model
        // also, use this.$, the scoped version of $: http://backbonejs.org/#View-dollar
    }
});

var test = new v({model: new m}); // give a reference to a model to your view
于 2013-06-20T11:20:20.397 回答
1

@Loamhoof 的回答是正确的。你写的时候就知道了

outputMsg: function(model){
    $("#d").append(model.get('msg'));
}

在这里你model会像一个e(事件),点击事件#b

于 2013-06-20T11:36:05.840 回答