3

backbone-localstorage プラグインを使用して、バックボーンの例に基づいて小さなアプリケーションを作成しています。

新しいモデルのデータを保存するとき、常にエラーが表示されます " A "url" プロパティまたは関数を指定する必要があります"

いくつかの類似トピックを読んだ後でも、この原因を見つけることができません。

モデル:

directory.models.EmployeeCollection = Backbone.Collection.extend({

    localStorage: new Backbone.LocalStorage("EmployeeCollection"), 

    model: directory.models.Employee,

    store: directory.utils.store,

    findByName: function(key) {
        this.reset(this.store.findByName(key));
    }

});

景色:

directory.views.newEmployeeView = Backbone.View.extend({

    tagName: "div",

    initialize: function() {
        this.template = _.template(directory.utils.templateLoader.get('new-employee'));
    },

    events: {
        "click .save": "saveEmployee"
    },

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

    saveEmployee: function(event){
        this.model.set({
            firstName:$('#newFirstName').val(),
            lastName:$('#newLastName').val(),
            title:$('#newTitle').val(),
            city:$('#newCity').val(),
            officePhone:$('#newOfficePhone').val(),
            cellPhone:$('#newCellPhone').val(),
            email:$('#newEmail').val()
        });

        this.model.save();
        window.history.back();

        return false;
    }
});
4

1 に答える 1

3

永続化を試みる前に、新しいモデルをコレクションのメンバーにする必要があると思います。コレクションの新しいインスタンスを作成し、次のように (おそらくルーターで) ビューに渡してみてください。

new newEmployeeView({ collection: new EmployeeCollection() });

ビューでは、Backbone の create コンビニエンス メソッド ( docsを参照) を使用して、モデルの新しいインスタンスをコレクションに追加し、それを永続化できます。

this.collection.create({
    firstName:$('#newFirstName').val(),
    lastName:$('#newLastName').val(),
    title:$('#newTitle').val(),
    city:$('#newCity').val(),
    officePhone:$('#newOfficePhone').val(),
    cellPhone:$('#newCellPhone').val(),
    email:$('#newEmail').val()
});
于 2013-05-30T14:09:39.200 に答える