2017-06-25 120 views
0

我試圖弄清楚如何通過它的id來獲取模型並顯示相同的視圖。我已經設置我的路由器以通過ID獲取數據。我嘗試了很多,但無法找到解決方案。任何想法在此將不勝感激。從骨幹js集合中獲取ID的模型

collection.js文件:

app.Collections.qualityCollection = Backbone.Collection.extend({ 
    model: app.Models.qualityModel, 
    url: "http://localhost/socialapp/php/fetch.php" 
}); 

var userCollections = new app.Collections.qualityCollection(); 

userCollections.fetch(); 

router.js文件:

app.Routers.socialRouter = Backbone.Router.extend({ 
     routes: { 
      "" : "homePage", 
      "make_friends/:id" : "userProfile", 
     }, 

     userProfile: function() { 
      new app.Views.idView({ model: userCollections.get(id) }); 
     } 

    }); 

    new app.Routers.socialRouter(); 

    Backbone.history.start(); 

view.js文件:

app.Views.idView = Backbone.View.extend({ 
    el: $("#app"), 

    template: _.template($('#public-profile').html()), 

    initialize: function(){ 
     this.render(); 
    }, 

    render: function() { 
     console.log(this.model); /// undefined 
     this.$el.html(this.template(this.model.toJSON())); 
     return this; 
    } 
    }); 

JSON從URL數據: [ { "id": "1", "firstname": "Abc", "lastname": "Xyz" }, { "id": "2", "firstname": "Klm", "lastname": "Opq" } ]

預計路由器鏈接:http://localhost/socialapp/#/make_friends/2

+0

你在哪裏看到示例將集合作爲模型屬性傳遞?我看到很多新人在做這件事。可能在互聯網上有一些不好的來源 –

回答

0

要回答您的問題,您將收到回調中的路由參數值。你可以把它傳遞給查看和訪問它在它的初始化

app.Routers.socialRouter = Backbone.Router.extend({ 
    routes: { 
     "" : "homePage", 
     "make_friends/:id" : "userProfile", 
    }, 

    userProfile: function(id) { 
     // no reference? 
     new app.Views.idView({ collection: userCollections, modelId: id }); 
    } 

}); 

如果你觀點實際上是一個項目視圖,你並不需要通過整個集合,你可以做在路由器中獲取集合後的以下內容。

new app.Views.idView({ model: userCollections.get(id) }); 

更重要的是,你的觀點並不需要一個集合,你只需要使用它返回一個模型的信息

+0

'new app.Views.idView({model:userCollections.get(id)});' 試過上面的方法..但在控制檯中得到「undefined」。但是「userCollections」顯示控制檯中的所有模型。 – Sahil

+0

@LipakSahil控制檯是數據的實時表示。當您嘗試傳遞到視圖時未定義,然後在控制檯中打開它時可用。我在回答「**取回集合後**」中說過**,您需要確保在嘗試傳遞到視圖之前完成抓取。你應該發佈你如何實現這個代碼 –

+0

@T J我更新了我的代碼。我無法弄清楚爲什麼我變得沒有定義。 – Sahil

0

userCollections.get(ID)應該工作終點的模型實例。

考慮到Id是模型的屬性,您也可以在下面找到模型。 (函數(模型){return model.get('id')=== Id;});}};}};}}

+0

userCollections.get(id);給未定義的。我已更新我的代碼..請看看一次。 – Sahil