Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Backbone.js backbone.layoutmanager生成错误消息“;使用选择器设置“查看”和“管理”属性';“真的”;_Backbone.js_Backbone Layout Manager - Fatal编程技术网

Backbone.js backbone.layoutmanager生成错误消息“;使用选择器设置“查看”和“管理”属性';“真的”;

Backbone.js backbone.layoutmanager生成错误消息“;使用选择器设置“查看”和“管理”属性';“真的”;,backbone.js,backbone-layout-manager,Backbone.js,Backbone Layout Manager,我在别处问过这个问题。但我也会在这里问,以防谁知道答案 我最近写了一个简单的web应用程序。它总共有两个视图,用户应该能够在这两个视图之间来回切换。在我看来,setView方法可以完成更改应用程序视图的任务。当通过单击链接从索引视图切换到显示视图时,这一切都很好。但是,当我单击链接时,它无法返回到索引视图。它只会弹出此错误消息“请将视图#使用选择器“”管理属性设置为true”。既然旧的视图对象在切换到另一个视图时应该被销毁,为什么它会有这个错误,除非它没有像我想的那样工作 下面是我的coffee

我在别处问过这个问题。但我也会在这里问,以防谁知道答案

我最近写了一个简单的web应用程序。它总共有两个视图,用户应该能够在这两个视图之间来回切换。在我看来,setView方法可以完成更改应用程序视图的任务。当通过单击链接从索引视图切换到显示视图时,这一切都很好。但是,当我单击链接时,它无法返回到索引视图。它只会弹出此错误消息“请将视图#使用选择器“”管理属性设置为true”。既然旧的视图对象在切换到另一个视图时应该被销毁,为什么它会有这个错误,除非它没有像我想的那样工作

下面是我的coffeescript代码片段。 MyApp.Routers.Home=Backbone.Router.extend( 路线: “书籍”:“showBooksIndex” 'books/:id':'showBook'

      initialize: (options) ->
        @buildLayout()

      buildLayout: ->
        @layout = app.useLayout("main")

      showBooksIndex: ->
        @cleanLayout()
        @books = new MyApp.Collections.Book();
        @viewIndex = new MyApp.Views.BooksIndex(
            collection: @books;
        )
        @layout.setView('#app', @viewIndex)

      showBook: (id) ->
        @cleanLayout()
        @book = new MyApp.Models.Book id: id
        @view = new MyApp.Views.BookShow model: @book
        @layout.setView('#app', @view)

      cleanLayout: ->
        appView = @layout.getView('#app')
        if appView
          appView.remove()

    MyApp.Views.BookShow = Backbone.View.extend(
      id: "book-show"
      className: "book-card"
      manage: true
      template: JST['templates/books/show']
      initialize: ->
        @model = @options.model
        _this = @
        @model.fetch(
          success: (model, resp)->
            _this.render();
        )  
MyApp.Views.BooksIndex的代码与BookShow视图类似


缓存视图可能也是一种解决方案。这种方法可以解决此问题,因为可以避免重新创建视图对象。但是,由于我的应用程序有很多照片,我更愿意在每次应用程序视图更改时从服务器获取数据。我不确定这是否正确。提前感谢您分享您的见解。

将LayoutManager全局设置为
manage:true
?或者只在少数视图上设置它?是的,我在Backbone.LayoutManager.configure中设置了它。它仅在从第二个视图切换回第一个视图时发出此错误。