1

Backbone.JS で次のエラーが発生します。

キャッチされていない TypeError:未定義のメソッド ' toJSON ' を呼び出せません。

モデルとビューのコードは次のとおりです。

 <script src="js/underscore.js"></script>
     <script src="js/jquery-1.6.2.min.js"></script>
    <script src="js/backbone.js"></script>

    var Person = Backbone.Model.extend({
            defaults:{
                name:"niran",
                age:20
            },
            validate:function(attr){
                if(attr.age <0){
                    return "should be greater than 0";
                }
            }
        }
    )

    var PhotoSearch = Backbone.View.extend({
        tagName:"li",
        initialize:function(){
            console.log(this.model)
            this.render();
        },

        template:_.template("<%= name %>(<%= age %>"),

        render:function(){
            this.$el.html(this.template(this.model.toJSON()));
        }
    });
       var p = new Person();
    var ps = new PhotoSearch({model:p});

これに関する任意のアイデア

皆さんありがとう

4

2 に答える 2

1

Backbone.js のドキュメント ( http://backbonejs.org/ ) によると、 json2.jsが必要です。

于 2012-12-14T15:06:40.000 に答える
1

これを試して:

var PhotoSearch = Backbone.View.extend({
        tagName:"li",
        initialize:function(){
            _.bindAll(this, "render");
            console.log(this.model)
            this.render();
        },

        template:_.template("<%= name %>(<%= age %>"),

        render:function(){
            this.$el.html(this.template(this.model.toJSON()));
        }
    });

You're missing a call _.bindAll(this, "render");Without this call, thiswill not set to the context of the view, つまり、.model未定義になります。

_.bindAll(this);すべてのメソッドをバインドするために使用することもできます。

backbone.jsビューでbindAllを行うのはなぜですか?

于 2012-12-14T15:07:12.783 に答える