2015-12-09 5 views
-2

У меня есть две модели seprate и мне нужно изменить эти модели в одном из представлений.Можно ли обновить 2 независимые модели в одном представлении в backbone.js

Может ли это быть сделано с помощью Backbone.js

Если да кто может предоставить мне краткий образец

Благодарности

+1

Почему вы думаете, что это не возможно ..? Что ты пытался ...? Что именно вы подразумеваете под * «Мне нужно изменить эти модели в одном из представлений» * ..? Пожалуйста, не рассматривайте stackoverflow как место, где вы пришли, и попросите код, и люди делают вашу работу за вас. –

ответ

1

Один из способов сделать это, чтобы связать collection этих моделей с точки зрения :

var collection = new Backbone.Collection(); 
collection.add(model1); 
collection.add(model2); 

И когда вы создаете мнение, вы должны initialzie его с этой коллекцией:

var myView = new View({collection:collection});

Затем в окне вы можете изменить каждый из представлений следующим образом:

events :{ 'input input' : 'updateModels'}, 
    updateModels: function(e){ 
    for(var i=0;i<this.collection.length;i++) 
    { 
     this.collection.at(i).set({'someProperty':'someValue'}); 
    } 
    } 

Приведенный выше пример будет срабатывать, например, когда пользователь вводит.

Другой способ - установить в вашей коллекции настраиваемое свойство для хранения массива этих моделей, а затем сделать то же самое, но я думаю, что использование коллекций могло бы выполнить эту работу за вас.

Вы можете увидеть очень простой и фиктивный пример здесь: http://jsfiddle.net/nwo5bww1/

+0

Одно замечание об этом решении заключается в том, что он будет работать только в том случае, если две модели были экземплярами одного и того же класса модели (или, я полагаю, так). Но в названии вопроса говорится «две независимые модели», которые заставляют меня думать, что они могут быть разными классами модели. – Xoundboy

+0

Твой закон, но есть много способов сделать это более общим ... – MorKadosh

0
var app = app||{}; 

app.Model1 = Backbone.Model.extend({ 
    //some code 
}); 
app.Model2 = Backbone.Model.extend({ 
    //some code 
}); 
var model1 = app.Model1(); 
var model2 = app.Model2(); 

app.View = Backbone.View.extend({ 
    initialize : function(options){ 
    console.log(options.model1); 
    console.log(options.model2); 
    } 
}); 

var view = new app.View({model1 : model1, model2 : model2}); 

Таким образом, вы можете иметь связывание с несколькими моделями, а также определить соответствующие функции для обновления моделей по отдельности.

Еще один очень хороший способ сделать это было бы использовать динамические модели, представленные здесь: Backbone.js: complex views combining multiple models