Ninja Forms 上的表单就绪/初始化事件 - Backbone / Marionette
Form ready / init event on Ninja Forms - Backbone / Marionette
我目前正在使用 WordPress 的 "NinjaForms" 插件,它为后端提供自定义表单管理。它基于 Marionette / Backbone JS。经过一些研究,我在输入更改和表单提交时触发 JavaScript 函数没有问题。但是,我还没有找到一种方法来在表单初始化/呈现/显示后捕获事件(实际上是其中任何一个)。
我现在正在做的是初始化一个 Marionette 对象,向收音机添加监听器,然后添加函数以在事件发生时执行它:
if(typeof Marionette !== 'undefined') {
var mySubmitController = Marionette.Object.extend( {
initialize: function() {
// init listener
this.listenTo( Backbone.Radio.channel( 'forms' ), 'view:show', this.initAction);
// field change listener
this.listenTo( Backbone.Radio.channel( 'fields' ), 'change:modelValue', this.valueChanged);
// submit listener
this.listenTo( Backbone.Radio.channel( 'forms' ), 'submit:response', this.actionSubmit );
},
// init action
initAction: function() {
console.log("init");
},
// input update action
valueChanged: function(model) {
console.log("update");
},
// submit action
actionSubmit: function( response ) {
// handled via php
console.log("submit");
},
});
// initialise listening controller for ninja form
new mySubmitController();
}
但是,行 this.listenTo( Backbone.Radio.channel( 'forms' ), 'view:show', this.initAction);
不起作用。我已经尝试了 view:render
、view:show
、show:view
、render:view
事件但没有成功。
我在 Backbone / Marionette 文档中进行了搜索,但找不到合适的事件。这个问题可能是重复的,但我真的找不到任何关于 Backbone.
的表单初始化事件的话题
经过长时间的搜索、谷歌搜索和挫败感,我找到了解决方案。使用以下 JavaScript-代码,您可以在表单渲染上执行代码:
// if there is a ninja form on this page
if(typeof Marionette !== 'undefined') {
var mySubmitController = Marionette.Object.extend( {
initialize: function() {
// init listener
this.listenTo( nfRadio.channel( 'form' ), 'render:view', this.initAction );
},
// init action
initAction: function() {
// code to execute on form render
},
});
// initialise listening controller for ninja form
new mySubmitController();
}
我目前正在使用 WordPress 的 "NinjaForms" 插件,它为后端提供自定义表单管理。它基于 Marionette / Backbone JS。经过一些研究,我在输入更改和表单提交时触发 JavaScript 函数没有问题。但是,我还没有找到一种方法来在表单初始化/呈现/显示后捕获事件(实际上是其中任何一个)。
我现在正在做的是初始化一个 Marionette 对象,向收音机添加监听器,然后添加函数以在事件发生时执行它:
if(typeof Marionette !== 'undefined') {
var mySubmitController = Marionette.Object.extend( {
initialize: function() {
// init listener
this.listenTo( Backbone.Radio.channel( 'forms' ), 'view:show', this.initAction);
// field change listener
this.listenTo( Backbone.Radio.channel( 'fields' ), 'change:modelValue', this.valueChanged);
// submit listener
this.listenTo( Backbone.Radio.channel( 'forms' ), 'submit:response', this.actionSubmit );
},
// init action
initAction: function() {
console.log("init");
},
// input update action
valueChanged: function(model) {
console.log("update");
},
// submit action
actionSubmit: function( response ) {
// handled via php
console.log("submit");
},
});
// initialise listening controller for ninja form
new mySubmitController();
}
但是,行 this.listenTo( Backbone.Radio.channel( 'forms' ), 'view:show', this.initAction);
不起作用。我已经尝试了 view:render
、view:show
、show:view
、render:view
事件但没有成功。
我在 Backbone / Marionette 文档中进行了搜索,但找不到合适的事件。这个问题可能是重复的,但我真的找不到任何关于 Backbone.
的表单初始化事件的话题经过长时间的搜索、谷歌搜索和挫败感,我找到了解决方案。使用以下 JavaScript-代码,您可以在表单渲染上执行代码:
// if there is a ninja form on this page
if(typeof Marionette !== 'undefined') {
var mySubmitController = Marionette.Object.extend( {
initialize: function() {
// init listener
this.listenTo( nfRadio.channel( 'form' ), 'render:view', this.initAction );
},
// init action
initAction: function() {
// code to execute on form render
},
});
// initialise listening controller for ninja form
new mySubmitController();
}