backbone.layoutmanager выдает сообщения об ошибках "установите для свойства`View#manage` with selector '' значение "true" "

Я задал этот вопрос в другом месте. Но я бы тоже спросил об этом на тот случай, если кто знает ответ.

Я недавно написал простое веб-приложение. Всего у него два представления, и пользователи должны иметь возможность переходить назад и вперед между двумя представлениями. Мне кажется естественным, что метод setView может изменить представление приложения. Все работает хорошо при переключении из представления индекса в представление просмотра, нажав ссылку. Однако он не может вернуться к представлению индекса, когда я нажимаю на ссылку. Просто появляется это сообщение об ошибке "Пожалуйста, установите View#manage property with selector '' в true". Поскольку старые объекты представления должны были быть уничтожены при переключении на другое представление, почему у него будет эта ошибка, если она не работает, как я думал, что будет.

Ниже приведен фрагмент моего кода. 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.

Кэширование представлений, вероятно, тоже решение. Этот подход будет работать вокруг этой проблемы, потому что избегается воссоздание объектов обзора. Но так как в моем приложении много фотографий, я бы предпочел получать данные с сервера каждый раз, когда меняется вид приложения. Я не уверен, что это правильный путь. Заранее спасибо за то, что поделились своим мнением.

0 ответов

Другие вопросы по тегам