Php Backbone.js,无法理解什么是;app.wineList.create(this.model)“;在;“保存葡萄酒”;方法

Php Backbone.js,无法理解什么是;app.wineList.create(this.model)“;在;“保存葡萄酒”;方法,php,backbone.js,Php,Backbone.js,我无法理解“saveWine”方法中的“app.wineList.create(this.model)”是什么。它将如何工作?我不熟悉backbone.js,请帮助我理解这一点。我知道这个.model.save() 实际上我已经删除了一些代码。只是我把代码贴在了我的问题所在 谢谢 // Models window.Wine = Backbone.Model.extend({ urlRoot:"../api/wines", defaults:{

我无法理解“saveWine”方法中的“app.wineList.create(this.model)”是什么。它将如何工作?我不熟悉backbone.js,请帮助我理解这一点。我知道这个.model.save()

实际上我已经删除了一些代码。只是我把代码贴在了我的问题所在

谢谢

    // Models
    window.Wine = Backbone.Model.extend({
        urlRoot:"../api/wines",
        defaults:{
            "id":null,
            "name":"",
            "grapes":"",
            "country":"USA",
            "region":"California",
            "year":"",
            "description":"",
            "picture":""
        }
    });

    window.WineCollection = Backbone.Collection.extend({
        model:Wine,
        url:"../api/wines"
    });


    // Views


    window.WineView = Backbone.View.extend({

        template:_.template($('#tpl-wine-details').html()),

        initialize:function () {
            this.model.bind("change", this.render, this); // (event, function, context)
        },

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

        events:{

            "click .save":"saveWine"

        },


        saveWine:function () {
            this.model.set({
                name:$('#name').val(),
                grapes:$('#grapes').val(),
                country:$('#country').val(),
                region:$('#region').val(),
                year:$('#year').val(),
                description:$('#description').val()
            });
            if (this.model.isNew()) {
                app.wineList.create(this.model);
            } else {
                this.model.save();
            }
            return false;
        }


    });



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

        routes:{
            "":"list",
            "wines/:id":"wineDetails"
        },

        initialize:function () {
            $('#header').html(new HeaderView().render().el);
        },

        list:function () {
            this.wineList = new WineCollection();
            this.wineListView = new WineListView({model:this.wineList});
            this.wineList.fetch();
            $('#sidebar').html(this.wineListView.render().el);
        },

        wineDetails:function (id) {
            this.wine = this.wineList.get(id);
            if (app.wineView) app.wineView.close();
            this.wineView = new WineView({model:this.wine});
            $('#content').html(this.wineView.render().el);
        }

    });

    var app = new AppRouter();
    Backbone.history.start();
如以下文件所述:

方便地在集合中创建模型的新实例。 相当于使用属性散列实例化模型,保存 将模型添加到服务器,并在创建后将模型添加到集合中 已成功创建


因此,它会将一个模型添加到您的酒单集合中,并将其保存到服务器。

感谢您让我理解这一点。为什么它的前缀是“app”?我们不能用“this”作为前缀,即this.wineList.create(this.model)而不是app.wineList.create(this.model)
wineList
app
的成员,请参见
AppRouter.list()
方法。当你在
approver
范围内时,你只能说
this.wineList
,其他地方你必须说
app.wineList
。我知道了。谢谢你的帮助。