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
Templates 如何在模态模板对话框中显示嵌入的模板?_Templates_Backbone.js_Coffeescript - Fatal编程技术网

Templates 如何在模态模板对话框中显示嵌入的模板?

Templates 如何在模态模板对话框中显示嵌入的模板?,templates,backbone.js,coffeescript,Templates,Backbone.js,Coffeescript,我不想在#content中呈现模板,而是先动态显示一个模式对话框,然后动态显示模板。负责显示自动包含所选模板的模式的代码应该在哪里?在所有这些之后,如何在取消后关闭并删除模态类?这是当前代码:。我正在学习主干,不知道正确的模式是什么 会话路由器: ($, Backbone, App, Session, Layout, AlertQueue) -> class App.Routers.SessionsRouter extends Backbone.Router initializ

我不想在
#content
中呈现模板,而是先动态显示一个模式对话框,然后动态显示模板。负责显示自动包含所选模板的模式的代码应该在哪里?在所有这些之后,如何在取消后关闭并删除模态类?这是当前代码:。我正在学习主干,不知道正确的模式是什么

会话路由器:

($, Backbone, App, Session, Layout, AlertQueue) ->
  class App.Routers.SessionsRouter extends Backbone.Router
    initialize: (options) ->
      @user  = options.user
      @token = options.token
      @session = new Session(@user)
      @user.on('change', =>
        @session = new Session(@user)
        @token.fetch()
      )

    routes:
      "signup":               "newRegistration"
      "signin":               "newSession"

    newRegistration: ->
      View = require 'views/registrations/new_view'
      Model = require 'models/registration'
      @view = new View(model: new Model(), user: @user)
      # Layout.setContent(@view)
      # Dialog.show(@view)??

    newSession: ->
      View = require 'views/sessions/new_view'
      @view = new View(model: @session, user: @user, token: @token)
      # Layout.setContent(@view)
布局帮助器,现在在静态容器中显示内容:

($, Backbone, App) ->
  class Layout extends Backbone.Model
    setContent: (content) ->
      do @currentContent.close if @currentContent?
      @currentContent = content
      ($ '#content').html content.render().el

  App.Helpers.Layout = new Layout
当前模式模板:

#dialog.modal.hide.fade
  .modal-header
    %a.close{href: "#"} ×
    / %h3=title
  .modal-body
    #dialog_content
  .modal-footer
    %a.btn.danger.yes Yes
    %a.btn.secondary.no No
当前模式对话框视图:

($, Backbone, App) ->

  class App.Views.Common.DialogView extends Backbone.View
    template: JST["common/dialog"]

    initialize: (options) ->
        super(options)

    render: ->
      $(@el).html(@template())
      $('.modal', @el).modal()
      return @

    show: ->
      $('.modal', @el).modal('show')

    hide: ->
      $('.modal', @el).modal('hide')
($, Backbone, App, Session, DialogView) ->

  class App.Views.Sessions.NewView extends DialogView
    template: JST["sessions/new"]
当前对话框初始值设定项:

($, Backbone, App, FormView, DialogModalView) ->

  class App.Views.Common.DialogView extends FormView

    className: -> "modal"

    initialize: ->
      view = new DialogModalView()

      $(view.render().el).find(".modal-body").append(@template())
      $(view.render().el.children).modal('show')
会话视图扩展了对话框视图:

($, Backbone, App) ->

  class App.Views.Common.DialogView extends Backbone.View
    template: JST["common/dialog"]

    initialize: (options) ->
        super(options)

    render: ->
      $(@el).html(@template())
      $('.modal', @el).modal()
      return @

    show: ->
      $('.modal', @el).modal('show')

    hide: ->
      $('.modal', @el).modal('hide')
($, Backbone, App, Session, DialogView) ->

  class App.Views.Sessions.NewView extends DialogView
    template: JST["sessions/new"]

更好的方法是将模态相关逻辑放置到视图中,从而呈现模板。 当视图的render方法调用它来呈现模板时,然后为了将具体视图逻辑与公共模式功能解耦,它应该触发一个事件,例如render

视图本身可以侦听此事件,以及当它触发呈现模板上的调用模式时。您可以将回调命名为onRender。如果模态与某些应用程序逻辑相关,则也可以使用此事件驱动方法在视图之外处理模态创建


此事件驱动模板和回调逻辑在中实现(当然,modal的处理不在插件中,但它呈现模板并触发事件)。看看它,除此之外,它还有许多功能,可以通过自动化这些重复的任务来节省您的时间。

因此,如果我理解正确,您不想在视图中调用
modal('show')
,而是希望Bootstrap为您这样做,以便您可以只渲染该modal中的任何内容?