Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用backbone.js组织子视图?_Javascript_Node.js_Backbone.js - Fatal编程技术网

Javascript 使用backbone.js组织子视图?

Javascript 使用backbone.js组织子视图?,javascript,node.js,backbone.js,Javascript,Node.js,Backbone.js,很抱歉,我是一个有主心骨的新手,但我想我了解这些概念 例如:您有书店>书架>书籍>页面的模型 您将如何组织这些视图,以便可以像这样控制视图: Bookstore.render() //to view the bookstore Bookstore.bookshelf.get(shelfId).render() //to view shelf Bookstore.bookshelf.get(shelfId).book.get(bookId).render() //to view book Book

很抱歉,我是一个有主心骨的新手,但我想我了解这些概念

例如:您有书店>书架>书籍>页面的模型

您将如何组织这些视图,以便可以像这样控制视图:

Bookstore.render() //to view the bookstore
Bookstore.bookshelf.get(shelfId).render() //to view shelf
Bookstore.bookshelf.get(shelfId).book.get(bookId).render() //to view book
Bookstore.bookshelf.get(shelfId).books.get(bookId).pages.at(0).render() //to view page

这是正确的方法吗?

是的,这是可能的,我为您创建了一个工作示例,我认为这只是组织主干JS架构的另一种方法,我认为这是一个非常好的主意

解释 所有型号必须具备:

  • 调用其视图的
    render
    方法的
    render
    方法。我为书架、书籍和页面模型创建了一个扩展的基础模型

  • 一个
    initialize
    方法,它创建集合(书架上的书,书本上的页…)

最后,我引用了书店模型,它完成了

代码 示范:

在控制台中尝试:

Bookstore.render()
Bookstore.bookshelves.get(1).render()
Bookstore.bookshelves.get(1).books.get(2).render()
Bookstore.bookshelves.get(1).books.get(2).pages.at(0).render()
此处提供了带注释的代码:

我认为最好的事情是理解代码是如何工作的。请随时问我,如果你有问题,完全理解我的代码

JSON数据 JSON数据必须如下所示:

var data = {
    bookshelves: [{
        id: 1,
        name: 'Science',
        books: [{
            id: 1,
            name: 'Abstract Algebra',
            pages: [
                { content: 'Page 1 Abstract'},
                { content: 'Page 2 Abstract'},
                { content: 'Page 3 Abstract'}
            ]
            }, {
                    id: 2,
                    name: 'Chemistry and Technology of Fertilizers',
                    pages: [
                { content: 'Chemistry page 1' },
                { content: 'Chemistry page 2' },
                { content: 'Chemistry page 3' }
            ]
          }
        ]
      }, {
        id: 2,
        name: 'Psychology',
        books: [{
            id: 1,
            name: 'How to Think Straight About Psychology',
            pages: [
                { content: 'Psychology page 1' },
                { content: 'Psychology page 2' },
            ]
          }
        ]
      }
    ]
};

@Alley,您想要做的事情与MVC模式背道而驰,因为您的模型对象必须与视图无关。 @Atinux answer可能有效,但在视图和模型对象之间引入了直接依赖关系

所有表示方法都必须驻留在视图对象中。视图和模型之间的通信必须使用事件完成。 因此,不要这样做:Bookstore.bookshelf.get(shelfId.render()) 您应该按照以下思路做一些事情:bookshelfView.render()