Javascript Meteor JS Meteor pages分页。set()重新运行控制器

Javascript Meteor JS Meteor pages分页。set()重新运行控制器,javascript,meteor,meteor-autoform,Javascript,Meteor,Meteor Autoform,在过去的几个小时里,我试图解决我的问题,问题是meteor pages包和它的.set()函数,它使我的控制器代码在每次更改时重新运行(即使是从javascript控制台)。让我向您展示我的代码片段: 自动形成钩子文件: AutoForm.hooks handsFilters: onSubmit: (data) -> # AutoForm.debug() # debugger @event.preventDefault() ex

在过去的几个小时里,我试图解决我的问题,问题是meteor pages包和它的.set()函数,它使我的控制器代码在每次更改时重新运行(即使是从javascript控制台)。让我向您展示我的代码片段:

自动形成钩子文件:

AutoForm.hooks
  handsFilters:
    onSubmit: (data) ->
      # AutoForm.debug()
      # debugger
      @event.preventDefault()

      extendFiltersForHoldem data

      RecentHandsPagination.set
        filters: new RecentHandsFilters(data).setFilters()
      $('#dropdown-recent-hands.open').removeClass('open')
      console.log "onSubmit hook"
      @done()
html格式的自动表单:

{{#autoForm schema='HandsFilterSchema' id='handsFilters' resetOnSuccess=false doc=handsFiltersDefaultDoc}}
              <div class="filters-header">
                <h4>{{_ 'filters'}}</h4>
                <a id="clear-form"> {{_ 'clear'}} </a>
              </div>
              <div class="filters-main">
                <div class="row">
                  <div class="col-lg-4 filters-game">
                    <label>{{_ 'features.hands.labels.games'}}</label>
                    {{> afQuickField name='pokerGames' id='pokerGames'}}
                  </div>
                  <div class="col-lg-4 filters-type">
                    <label>{{_ 'features.hands.labels.types'}}</label>
                    {{> afQuickField name='pokerTypes'}}
                  </div>
                  {{> filtersVariants}}
                </div>
              </div>
              {{> filtersChoose}}
              <div class="filters-footer">
                <button data-action='close-hands-filter' type='submit'>{{_ 'buttons.apply'}}</button>
                <small>{{_ 'globalWords.or'}}</small>
                <a href="">{{_ 'buttons.cancel'}}</a>
              </div>
            {{/autoForm}}
我的分页实例:

@RecentHandsPagination = new Meteor.Pagination Hands,
  availableSettings:
    filters: true
    sort: true
  templateName: 'hands'
  itemTemplate: 'handItem'
  perPage: 30
  infinite: true
  infiniteRateLimit: 1
  infiniteTrigger: 3
  dataMargin: 0
  maxSubscription: 1000
  divWrapper: true
现在,当我在表单上单击“应用”(用于设置meteor pages包的过滤器)时,我可以在浏览器的js控制台中看到:

onSubmit hook
recent_hands_controller.coffee:12 doing onBeforeAction
recent_hands_filters.coffee:11 <<<<<<<<<<<@RecentHandsFilters>>>>>>>>>>>>>
recent_hands_controller.coffee:12 doing onBeforeAction
recent_hands_filters.coffee:11 <<<<<<<<<<<@RecentHandsFilters>>>>>>>>>>>>>
onsubmithook
最近的手控制器。咖啡:12点行动前做
最近的手过滤器。咖啡:11>>
最近的手控制器。咖啡:12点行动前做
最近的手过滤器。咖啡:11>>

问题在于您的按钮:

<button data-action='close-hands-filter' type='submit'>{{_ 'buttons.apply'}}</button>

遗憾的是,这并没有帮助,因为我正在使用autoform,我已经在事件上调用了preventDefault()。当我应用您建议的代码时,onSubmit autoform钩子根本没有运行。@MatthewK啊,我明白您的意思了。为此,您需要添加另一个按钮来提交表单<代码>提交应该可以。我有一些最新的结论,问题不是自动表单本身,而是meteor pages包,每次我更改分页设置时,控制器都会重新运行,即使我使用简单的分页名称从控制台级别执行。set({filters:{})
<button data-action='close-hands-filter' type='submit'>{{_ 'buttons.apply'}}</button>
<button data-action='close-hands-filter' id="applybutton">{{_ 'buttons.apply'}}</button>
Template.yourTemplateName.events({
    'click #applybutton':function(e,tmpl) {
        e.preventDefault();
    }
});