我对骨干很新,我遇到了一些麻烦。
所以我试图从集合中的模型中获取一些数据而我无法弄清楚如何,我不确定我是否设置了我的集合不正确或者其他什么,但那是我希望你们可以提供帮助的地方。
这是我的代码:
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});
}
});
到目前为止,这对我没有好运。
我还在控制台中做了一些调试,看看我是否可以通过任何其他方式访问它。我的断点放在e.preventDefault()
函数的loadPreviousPage
上。这是我试图做的和我得到的结果:
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 :(得分:2)
在您的第一个代码块中,currentPage
似乎没有在任何地方定义。
在控制台输出中,where
返回一个数组,并且您尝试将其用作模型。试试
var pageModel = myWebsite.where({pageID: 1})[0];
console.log(pageModel.get('pageName'));