7

私のコード:

私はBackbone.jsを初めて使用し、Backbone.jsとPHPを使用してアプリを構築しようとしています。addルーターを呼び出そうとすると、次のエラーが発生します。

Uncaught TypeError:Object[objectObject]にはメソッド'set'がありません。

私の間違いを見つけるのを手伝ってください。

ありがとう。

    // Models
    window.Users = Backbone.Model.extend({
        urlRoot:"./bb-api/users",
        defaults:{
            "id":null,
            "name":"",
            "email":"",
            "designation":""
        }
    });

    window.UsersCollection = Backbone.Collection.extend({
        model:Users,
        url:"./bb-api/users"
    });


    // Views


    window.AddUserView = Backbone.View.extend({

        template:_.template($('#new-user-tpl').html()),

        initialize:function(){
            this.model.bind("click", this.render, this);
        },

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

        events:{
            "click .add":"saveUser"
        },

        saveUser:function(){ alert('saveUser');
            this.model.set({
                name:$("#name").val(),
                email:$("#email").val(),
                designation:$("#designation").val()
            });

            if(this.model.isNew()){
                this.model.create(this.model);
            }
            return false;
        }
    });


    // Router
    var AppRouter = Backbone.Router.extend({

        routes:{
            "":"welcome",
            "users":"list",
            "users/:id":"userDetails",
            "add":"addUser"
        },


        addUser:function(){ 
            this.addUserModel = new UsersCollection();
            this.addUserView = new AddUserView({model:this.addUserModel});
            $('#content').html(this.addUserView.render().el);
        }


    });

    var app = new AppRouter();
    Backbone.history.start();
4

2 に答える 2

0

オブジェクトスコープの問題に直面していると思います。イベントが発生すると、その関数のイベント オブジェクトに送信されます。これを試すだけでうまくいくかもしれません初期化内の現在のビューでグローバル変数を宣言します

initialize : function(){ self = this; }

次に、これを自分自身に変更します。

       saveUser:function(){ alert('saveUser');
        self.model.set({
            name:$("#name").val(),
            email:$("#email").val(),
            designation:$("#designation").val()
        });

        if(self.model.isNew()){
            self.model.create(this.model);
        }
        return false;
    }
于 2015-07-06T06:30:30.093 に答える