1

Я не очень хорошо знаю Backbone, поэтому вопрос.

Есть элемент коллекции:

// Модель данных для основной таблицы
App.Model.BaseRow = Backbone.Model.extend({
    defaults: {
        // Номер по пункту
        NumberOfItem: '',
        // Наименование
        Name: '',
    }
});

Есть коллекция этих эелементов:

//Список строк для основной таблицы
App.Collection.BaseTableBody = Backbone.Collection.extend({
    model: App.Model.BaseRow
});

И представление для каждой строки

App.View.BaseRow = Backbone.View.extend({
    initialize: function() {
        this.listenTo(this.model, "change", this.render);
    },

    tagName: "tr",

    className: "cssClass_BaseTableRow__tr",

    events: {
        "click": "tuggleSubTable",
    },

    template: template("id_BaseRowTemplate__script"),

    render: function() {
        this.$el.html( this.template( this.model.toJSON() ) );

        return this;
    },

    tuggleSubTable: function(e){
        console.log(e);
        // Метод открывает подтаблицу если она не октрыта или закрывает ее если она открыта
        // 1) Проверть открыта ли таблица
        //     2) Да
        //         3) Найти в коллекции подтаблицу и удалить ее из дом, поставить флаг что подтаблица закрыта
        //          this.model.remove....  - что то вроде того наверное
        //     4) Нет
        //         5) Произветсти запро к БД получить данные для подтаблицу
        //         6) Отрендрить подтаблицу поставить флаг что подтаблица открыта
    }

});

Мне надо в методе tuggleSubTable узнать по какому индексу в коллекции находится текущий элемент App.View.BaseRow. это нужно для того что бы в коллекцию вставить новую строку ниже текущей.

Vas Mil
  • 1,670
  • Возможный дубликат вопроса: Как получить индекс элемента массива – Air Dec 30 '17 at 07:22
  • Не решило но позволило мне задуматься над архитектурой, выходит что каждый элемент коллекции App.Model.BaseRow должен содержать в себе указатель на коллекцию в которой находится. Меня это смущает, не портит ли это архитектуру и стоит ли так делать в backbone, может есть способ лучше? – Vas Mil Dec 30 '17 at 10:46

0 Answers0