2013-02-20 50 views
0

我有一個集合,我想分享兩個不同的視圖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); 

    } 
}); 
+1

我注意到你的模型定義中有'App.Views.Person',但是實例化'App.Views.AddPerson',這只是一個錯字嗎?另外,你正在使用一個集合實例化一個名爲'Person'的View,這似乎很奇怪。通常,代表「集合」的視圖將是複數形式,例如「人物」。 我也在努力理解這個問題。您希望在兩個視圖中共享相同的模型?你能提供更多的代碼嗎?模型可能嗎? – juco 2013-02-20 13:33:38

+0

@juco,我有相當多的代碼,試圖保持它與問題的相關性 - >是試圖在視圖之間共享模型 - >可以在這裏查看網站:http://debrucellc.com/backbone_images/ - >所以當我點擊頂部視圖(personView)中的圖像時,它會將'this.model'設置爲該視圖的關聯模型。我希望能夠使用'this.model.get'/'this.model.set'從我的底部輸入框appView onclick訪問頂部選定的模型數據,但是我的底部輸入框並不知道我的頂級模型/圖片已被選中:-)如果它能幫助你,我可以添加更多內容 – 2013-02-20 14:00:50

回答