Как мне подключить / связать мою модель с моим представлением?

#javascript #backbone.js #view #model

#javascript #backbone.js #Вид #Модель

Вопрос:

Я переношу приложение на backbone и не уверен, как привязать мою модель к моему представлению?

Я думаю, первый вопрос заключается в том, выполняется ли это по экземпляру за экземпляром, или это то, что я могу установить один раз, чтобы каждый экземпляр модели (определенного типа) был подключен к каждому экземпляру представления (определенного типа).

Вот мое первое предположение / попытка:

 /***************************************************************************************************
*/

    var ModelMediaPane = Backbone.Model.extend({
        defaults: {
            visible:          false,
            previous:         null,
            current:          'about'
        }
    });
    var model_media_pane = new ModelMediaPane();
    $A.log(model_media_pane.get('visible'));

    var ViewMediaPane = Backbone.View.extend({
        id: "mi_holder",
        events: {
        }
    });

    var view_media_pane = new ViewMediaPane({model:ModelMediaPane});
    $A.log(view_media_pane.el);
  

Ответ №1:

У вас есть много способов сделать это.

Самый простой — когда вы создаете экземпляр представления, вы вводите модель в свое представление, передавая экземпляр модели. Как вы уже делаете. или вы можете просто создать переменную с именем ‘model’ внутри вашего представления и создать экземпляр новой модели.

Отвечая на ваш вопрос,

Если вы используете один и тот же экземпляр модели для создания экземпляров 2 представлений (любого вида). Модель будет одинаковой для ваших двух представлений. Это означает, что если ViewA и ViewB прослушивают события одной и той же модели, они оба будут реагировать на одно и то же событие.

пример:

 var modelA = new ModelA();
var ViewA = new ViewA({model:modelA});
var ViewB = new ViewB({model:modelA});
  

Если вы что-то измените в ModelA, оба представления будут реагировать.

Это позволяет вам иметь два представления, прослушивающие два разных экземпляра одной и той же модели, для меня это не имеет смысла, но зависит от ваших правил.