我想根据第一个菜单的当前选择动态更新第二个菜单,而无需用户提交表单。
我正在学习使用Catalyst Framework和Template Toolkit,这些菜单的数据存储在我使用TT指令访问的模型中。
我之前使用过JQuery的.change()方法来检索菜单的状态,并将其传递给CGI进行处理。
我可以使用Template Toolkit做类似的事情吗?如何将javascript变量传递给TT指令?其他解决方案?
答案 0 :(得分:1)
是的,它可以完成,但重要的是要记住,一旦模板呈现为HTML,TT就不会再发挥作用了。听起来你之前使用CGI的经历会让你大部分时间都在那里:你的.change()
事件必须触发一个Catalyst动作,为你的菜单返回一些JSON内容。
无论需要设置什么变量,都可以通过TT处理,例如: 未测试
$(document).ready(function(){
$('#menu1').change(function(){
var menuopt = $(this).val();
$.ajax({
url: "[% c.uri_for('/my/action') %]",
data: "menu1=" + menuopt,
dataType: "json",
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(data) {
$.map(data, function(item) {
// create menu2 here
}
}
});
});
});