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

时间:2013-01-16 04:59:13

标签: javascript backbone.js backbone-views backbone-collections backbone-model

我有一个使用BackboneJS的Web应用程序。在这个应用程序中,我有一个 LayoutView.js 文件,其中有一个Backbone View(称为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...
}
});

现在,我传递的数据位于初始化功能的 attrs 中。怎么做到这一点..?

1 个答案:

答案 0 :(得分:0)

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

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

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

在您的观点中,this.collection会引用您的configData集合。