Javascript Meteor JS Meteor pages分页。set()重新运行控制器
在过去的几个小时里,我试图解决我的问题,问题是meteor pages包和它的.set()函数,它使我的控制器代码在每次更改时重新运行(即使是从javascript控制台)。让我向您展示我的代码片段: 自动形成钩子文件: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
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();
}
});