将变量值从 php 发送到 Moodle 中的 js 脚本的最佳方式
Optimal way for sending variable value from php to js script in Moodle
我的 Moodle 过滤器中有模态弹出窗口,但一些变量应该在我的 php 脚本中定义,但我无法在 JS 中正确设置。示例 "MyVariable":
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content',
}, trigger)
.done(function(modal) {
// Do what you want with your new modal.
var MyVariable; // I need to set this variable value from my php script
});
});
现在我可以使用这种方式并在代码中添加一些具有变量值的 html 标签:
<input type="hidden" value="5" id="get-variable" />
or
<div data-value="5" style="display:none" id="get-variable"></div>
并取值
$("#get-variable").val() or $("#get-variable").attr("data-value")
但也许可以更正确地将变量发送到我的模态 JS?
要将变量发送到模式,只需在创建方法中通过参数“templateContext”传递它们:
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
var myVariable
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content',
templateContext : myVariable
}, trigger)
.done(function(modal) {
// Do what you want with your modal
});
});
如果您正在使用 mustache 模板,并希望在安装模态框后传递变量,您可以使用 templates.render 作为 setBody 方法(或 setFooter 或 setHead)的参数:
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
var myVariable
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content'
}, trigger)
.done(function(modal) {
modal.setBody(templates.render('your_mustache_file', myVariable))
});
});
我的 Moodle 过滤器中有模态弹出窗口,但一些变量应该在我的 php 脚本中定义,但我无法在 JS 中正确设置。示例 "MyVariable":
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content',
}, trigger)
.done(function(modal) {
// Do what you want with your new modal.
var MyVariable; // I need to set this variable value from my php script
});
});
现在我可以使用这种方式并在代码中添加一些具有变量值的 html 标签:
<input type="hidden" value="5" id="get-variable" />
or
<div data-value="5" style="display:none" id="get-variable"></div>
并取值
$("#get-variable").val() or $("#get-variable").attr("data-value")
但也许可以更正确地将变量发送到我的模态 JS?
要将变量发送到模式,只需在创建方法中通过参数“templateContext”传递它们:
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
var myVariable
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content',
templateContext : myVariable
}, trigger)
.done(function(modal) {
// Do what you want with your modal
});
});
如果您正在使用 mustache 模板,并希望在安装模态框后传递变量,您可以使用 templates.render 作为 setBody 方法(或 setFooter 或 setHead)的参数:
define(['jquery', 'core/modal_factory'], function($, ModalFactory) {
var trigger = $('#create-modal');
var myVariable
ModalFactory.create({
title: 'test title',
body: '<p>test body content</p><a href="#" id="a-element">Click me</a>',
footer: 'test footer content'
}, trigger)
.done(function(modal) {
modal.setBody(templates.render('your_mustache_file', myVariable))
});
});