Как передать модель (данные) из одного представления в другое в Backbone и отредактировать/удалить ее?

У меня есть веб-приложение, использующее BackboneJS. В этом приложении у меня есть файл 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 "< em>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 в функции initialize. Как это сделать..?




Ответы (1)


Синтаксис для создания экземпляра представления Backbone — new View(options), где options — это Object с парами ключ-значение.

Чтобы передать коллекцию в ваше представление, вы должны создать ее экземпляр следующим образом:

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

В вашем представлении this.collection будет относиться к вашей коллекции configData.

person anushr    schedule 16.01.2013
comment
Не могли бы вы сказать, где именно код, который вы предложили, должен быть вписан в мой код? - person dany; 18.01.2013