如何在Backbone中将模型(数据)从一个视图传递到另一个视图并编辑/删除它

How to pass a model(data) from one view to another in Backbone and edit/delete it?

本文关键字:视图 另一个 删除 编辑 一个 Backbone 模型 数据      更新时间:2023-09-26

我有一个使用BackboneJS的web应用程序。在这个应用程序中,我有一个LayoutView.js文件,其中有一个骨干视图(称为LayoutView)。LayoutView有其他调用其他视图的函数(方法)。我在LayoutView的初始化函数中获取一些数据,我需要在另一个视图和工作(更新/删除)中获得相同的数据(模型)。下面是我如何从LayoutView传递数据到myView:

var LayoutView = Backbone.View.extend({
    el: $("#mi-body"),
    initialize: function () {
        var that = this;
        this.ConfigData = new Configurations(); //Configurations is a collection
        this.ConfigData.fetch({ 
            success: function () {
                alert("success");
            },
            error: function () {
                alert("error");
            }
        });
        this.render();
        Session.on('change:auth', function (session) {
            var self = that;
            that.render();
        });
    },
    render: function () {
        // other code
    },
    events: {
        'click #logout': 'logout',
        'click #divheadernav .nav li a': 'highlightSelected'
    },
    myView: function () {
        if (Session.get('auth')) {
            this.$el.find('#mi-content').html('');
            this.options.navigate('Myview');
            return new MyLayout(this.ConfigData);
        }
    }
});

仍然,我不知道如何"获取"/访问这些数据作为我当前的数据/模型/集合(我不确定哪个术语是正确的)在myView和工作上使用Backbone的"model.save(), model.destroy()"方法。此外,每当编辑/删除发生时,ConfigData的数据应该被修改,更新应该反映在显示给用户的html中。

下面是来自MyView的代码:
    var MyView = Backbone.View.extend({
    tagName: 'div',
    id: "divConfigurationLayout",
    initialize: function (attrs) {
        this.render();
    },
    render: function () {
        var that = this;
    },
    events: {
        "click #Update": "update",
        "click #delete": "delete"
    },
    update: function(){
//code for updating the data like model.save...
},
delete: function(){
//code for deleting the data like model.destroy...
}
});
现在我传递的数据在initialize函数的attrs中。如何做到这一点?

实例化Backbone视图的语法为new View(options),其中options为具有键值对的Object

要将集合传递给视图,您可以这样实例化它:

new MyLayout({
    collection : this.configData
});

在您的视图中,this.collection将指您的configData集合。