我有一個集合,我想分享兩個不同的視圖Backbone.js的,用於連接2點不同的意見
之間當前所選模型有關的信息收集相同型號 - >簡單地說,我想能夠訪問選擇的一種查看從另一個視圖,並改變模型/ ASSIGN模型的ATTRIBUTES
第一視圖被定義與:
App.Views.Person = Backbone.View.extend({
tagName: 'a',
template: template('personTemplate'),
initialize: function(){
this.model.on('change', this.render, this);
this.model.on('destroy', this.remove, this);
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
this.input = this.$('.view');
return this;
},
第二視圖定義與:
App.Views.App = Backbone.View.extend({
el: 'html',
initialize: function(){
_.bindAll(this,"render");
},
render: function() {
return this;
},
,我創造了我的觀點有以下
addPersonView = new App.Views.AddPerson({ collection: peopleCollection });
appView = new App.Views.App({ model: person, collection: peopleCollection });
如何讓這個在第二視圖中選擇的模式是一樣的,在第一個視圖模型從我的收藏拉 - >例如,當我在底部視圖的輸入框中鍵入內容時,我希望能夠使用:this.set.model({name:title})
,併爲此設置模型屬性(與模型相關),該屬性在我的頂視圖,但使用this.set.model
未選擇在我的第一個視圖中選擇的正確模型
作進一步的參考和困惑:我的模型被添加到我的PeopleView中,並使用下面的代碼從數組中加載;
App.Views.People = Backbone.View.extend({
// tagName: '',
initialize: function() {
var i = 1;
while(i < size)
{
var person = new App.Models.Person({ url: jsArray[i] });// creating a new person object..
this.collection.add(person);
i++
}
this.collection.on('add', this.addOne, this);
console.log(jsArray[1]);
// listeners/anouncers for the collection on add..
},
// refactored render method...
render: function() {
this.collection.each(this.addOne, this);
return this;
},
// called from render method of collection view..
addOne: function(person) {
var personView = new App.Views.Person({ model: person, vent: vent });
this.$el.append(personView.render().el);
}
});
我注意到你的模型定義中有'App.Views.Person',但是實例化'App.Views.AddPerson',這只是一個錯字嗎?另外,你正在使用一個集合實例化一個名爲'Person'的View,這似乎很奇怪。通常,代表「集合」的視圖將是複數形式,例如「人物」。 我也在努力理解這個問題。您希望在兩個視圖中共享相同的模型?你能提供更多的代碼嗎?模型可能嗎? – juco 2013-02-20 13:33:38
@juco,我有相當多的代碼,試圖保持它與問題的相關性 - >是試圖在視圖之間共享模型 - >可以在這裏查看網站:http://debrucellc.com/backbone_images/ - >所以當我點擊頂部視圖(personView)中的圖像時,它會將'this.model'設置爲該視圖的關聯模型。我希望能夠使用'this.model.get'/'this.model.set'從我的底部輸入框appView onclick訪問頂部選定的模型數據,但是我的底部輸入框並不知道我的頂級模型/圖片已被選中:-)如果它能幫助你,我可以添加更多內容 – 2013-02-20 14:00:50