0
我想寫一些backbone.js的東西,以更好地瞭解在哪裏,如果它適合我更好的項目。任何方式我有一個網站,我正在加載與頁面內容的集合。backbone.js新手收藏
JSON數據回來與我的路由器(PID,姓名,標題,內容),默認爲
defaultRoute: function (actions)
{
this.showInfo('food');
},
showInfo: function (id)
{
var view = new ContentView({ model: this._items.at(id) });
$(".active").removeClass("active");
$("#" + id).addClass("active");
view.render();
}
如果我把一個0到位的ID在這個「新內容查看({模式:此._items.at(0)})」我會得到的第一個項目集合中,如果我這樣做的視圖:
var ContentView = Backbone.View.extend({
el: $('#content'),
render: function()
{
this.el.empty();
$(this.el).append(this.model.attributes.content);
return this;
}
});
我得到的內容顯示完美,但當然也可能不是我的內容想要
是嗎?可能從基於名稱==「食物」的集合中選擇?我不希望有映射內容ID號擊敗在DB存儲的目的
很抱歉,如果這似乎是一個愚蠢的問題,但我已經爬遍前瞻性和我敢肯定,我在想念着一些簡單的
這裏是我的全部NavigationRouter代碼的情況下,它可以幫助
var NavigationRouter = Backbone.Router.extend({
_data: null,
_items: null,
_view: null,
routes: {
"p/:id": "showInfo",
"*actions": "defaultRoute"
},
initialize: function (options)
{
var _this = this;
$.ajax({
url: "page_data.php",
dataType: 'json',
data: {},
async: false,
success: function (data)
{
_this._data = data;
_this._items = new ItemCollection(data);
_this._view.render();
Backbone.history.loadUrl();
}
});
return this;
},
defaultRoute: function (actions)
{
this.showInfo('home');
},
showInfo: function (id)
{
var view = new ContentView({ model: this._items.at(id) });
$(".active").removeClass("active");
$("#l_" + id).parent().addClass("active");
view.render();
}
});
所以我必須創建一個。新var var homeModel等每個頁面我要在內部路由顯示信息,因爲this._items將在NavigationRouter之外未定義 – Ehask 2011-12-29 00:40:23
您不是使用下劃線的'find'函數創建新模型。您只需在'this._items'中找到已存在的模型並保存對其的引用即可。然後你可以做它的東西,把它傳遞給現有的視圖,傳遞給新的視圖,無論如何。 – satchmorun 2011-12-29 00:43:58
明白了!謝謝!! – Ehask 2011-12-29 00:51:06