0

我對骨幹網非常陌生,而且遇到了一些麻煩。無法從骨幹網收集數據

所以我試圖從一個集合中的模型中獲取一些數據,我不知道如何,我不確定我是否已經錯誤地設置了我的集合或某些東西,但這正是我希望你們可以提供幫助的地方。

這裏是我的代碼:

var currentPage = 1; 

var Page = Backbone.Model.extend({ 
    defaults: { 
     pageName: '', 
     pageID: 0, 
     ajaxUrl: '', 
     pageUrl: '', 
     hashUrl: '', 
     previousPage: '', 
     nextPage: '' 
    } 
}); 

var home = new Page({ 
    pageName: 'Home', 
    pageID: 1, 
    ajaxUrl: 'ajax-content/index.html', 
    pageUrl: 'index.html', 
    hashUrl: '#index', 
    previousPage: 'Contact', 
    nextPage: 'Our Approach' 
}); 

var WebsitePages = Backbone.Collection.extend({ 
    model: Page 
}) 

var myWebsite = new WebsitePages([home]); 

var ContainerView = Backbone.View.extend({ 
    el: "body", 
    events: { 
     'click .previous-page': 'loadPreviousPage', 
     'click .next-page': 'loadNextPage' 
    }, 
    loadPreviousPage: function(e) { 
     e.preventDefault(); 

     var pageModel = myWebsite.where({pageID: currentPage}); 
    }, 
    loadNextPage: function(e) { 
     e.preventDefault(); 

     var pageModel = myWebsite.where({pageID: currentPage}); 
    } 
}); 

到目前爲止,這已經讓我沒有運氣。

我也在控制檯上做了一些調試,看看我是否可以用其他方式訪問它。我的斷點放置在loadPreviousPage函數的e.preventDefault()上。這裏是我試圖做的,結果我得到了:

myWebsite 
s {length: 6, models: Array[6], _byId: Object, constructor: function, model: function…} 

myWebsite.get('home') 
undefined 

myWebsite.get(0) 
undefined 

myWebsite.get('0') 
undefined 

myWebsite.where({pageID: 1}) 
[s] 

var pageModel = myWebsite.where({pageID: 1}) 
undefined 

pageModel 
[s] 

pageModel.get(pageName) 
ReferenceError: pageName is not defined 

pageModel.get('pageName') 
TypeError: undefined is not a function 

我超迷茫現在這樣,如果有人可以幫助我,這將是真棒。

乾杯。

+0

您的集合已定義良好,但[where](http://backbonejs.org/#Collection-where)返回與屬性匹配的模型數組。 – Puigcerber

回答

2

在您的第一個代碼塊中,currentPage似乎沒有在任何地方定義。

在您的控制檯輸出中,where返回一個數組,您試圖將其用作模型。嘗試使用

var pageModel = myWebsite.where({pageID: 1})[0]; 

console.log(pageModel.get('pageName')); 
+0

感謝您的回覆,我已將它添加到代碼中,currentPage變量設置在每個頁面的HTML中,這就是爲什麼我在代碼中錯過了它。增加'[0]'工作,非常感謝。我明白添加這將使我成爲數組的第一部分,但我不明白爲什麼這是必需的。 – lukehillonline

+0

這是必需的,因爲'where'返回一個數組。要訪問數組中的模型,只需使用'myArray [0]'訪問它:它等同於'var myArray = myWebsite.where({pageID:1})''後跟'var pageModel = myArray [0]' –

+0

輝煌, 謝謝你的幫助。 – lukehillonline