View 木偶JS3:ui在第二次显示视图后具有字符串选择器

View 木偶JS3:ui在第二次显示视图后具有字符串选择器,view,coffeescript,marionette,View,Coffeescript,Marionette,问题是在第二次显示视图之后this.ui.uielemnet不返回元素,只返回字符串选择器。事件和其他逻辑工作得很好,但我不能在第二次之后获得元素。在第一个show视图中,`一切按计划进行 代码如下。我为explain添加了控制台日志。咖啡(手稿) 路由器: class App.Routers.PanelRouter extends Marionette.AppRouter initialize: (options = {}) -> @mainView

问题是在第二次
显示视图之后
this.ui.uielemnet
不返回元素,只返回字符串选择器。事件和其他逻辑工作得很好,但我不能在第二次之后获得元素。在第一个
show视图中,`一切按计划进行

代码如下。我为explain添加了控制台日志。咖啡(手稿)

路由器:

    class App.Routers.PanelRouter extends Marionette.AppRouter
      initialize: (options = {}) ->
        @mainView = options.cpView

      routes:
        'sbis-docs(/)': 'sbisDocShow'
        'sbis-send(/)': 'sbisSendShow'


      sbisDocShow: ->
        view = new App.Views.SbisDoc
        @mainView.getRegion('childRegion').show view
        view.showTable()

      sbisSendShow: ->
        view = new App.Views.SendSbis
        @mainView.getRegion('childRegion').show view

part of view

class App.Views.SendSbis extends Marionette.View

  template: _.template(App.Templates.SbisSend);

  initialize:() ->
    vent.on('event:change-search-method', @changeSearchMethod)
    vent.on('event:change-send-method', @changeSendMethod)

  changeSearchMethod: (data) =>
    if data.checked
      @ui.cust.attr('placeholder', 'Customer ID')
      @ui.labelCust.text('Номер договора')
    else
      @ui.cust.attr('placeholder', 'Логин')
      @ui.labelCust.text('Логин пользователя')


  changeSendMethod: (data) =>
    console.log @ui.month
    if data.checked
      @ui.month.prop('disabled', false)
    else
      @ui.month.prop('disabled', true)

  ui:
    sendDocs: '#send-docs'
    form:     '#form-docs'
    cust:     '#cust'
    year:     '#year'
    month:    '#month'
    labelCust:'#label-cust'
其他意见:

class App.Views.SetupSend extends Marionette.View
  template: _.template(App.Templates.SetupSend)

  onAttach: ->
    @ui.checkboxes.bootstrapToggle()

  ui:
    search: '#search-method'
    send: '#send-method'
    checkboxes: 'input[type=checkbox][data-toggle^=toggle]'

  events:
    'change @ui.search': 'changeSearchMethod'
    'change @ui.send': 'changeSendMethod'

  changeSearchMethod: (e) ->
    vent.trigger('event:change-search-method', e.target)

  changeSendMethod: (e) ->
    vent.trigger('event:change-send-method', e.target)
第一次在
changeSendMethod:(数据)
控制台日志中
[input#month.form-control,prevObject:r.fn.init[1]
但当我改变路线并再次返回时,console.log是
#月份


如果我在
$(@ui.month.prop('disabled',false)
上更改
@ui.month.prop('disabled',false)
它将正常工作。但我不明白为什么会发生这种情况,以及我如何修复它。

好吧,问题是在new
show view
append new
vent.on('event:change search method',@changeSearchMethod)

解决我的问题

  onDestroy: () ->
    vent.off('event:change-search-method', @changeSearchMethod)
    vent.off('event:change-send-method', @changeSendMethod)