无法从主干集合中获取数据

时间:2014-02-28 15:19:10

标签: javascript backbone.js backbone-collections backbone-model

我对骨干很新,我遇到了一些麻烦。

所以我试图从集合中的模型中获取一些数据而我无法弄清楚如何,我不确定我是否设置了我的集合不正确或者其他什么,但那是我希望你们可以提供帮助的地方。

这是我的代码:

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

我现在非常困惑,所以如果有人能帮助我,那就太棒了。

干杯。

1 个答案:

答案 0 :(得分:2)

在您的第一个代码块中,currentPage似乎没有在任何地方定义。

在控制台输出中,where返回一个数组,并且您尝试将其用作模型。试试

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

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