正如我目前所理解的那样,jquery模式在页面加载期间呈现,并由用户通过hidden = true to hidden = false值触发。
这一切都很好,花花公子,并且每当模态保持在每页最小值时效果很好。但是,这是我的问题,如果你有一个完整的模态列表,当你点击它时会弹出一个信息模式进行编辑。比如说,一个文档网格,你希望点击一个文档并弹出一个模态,只需编辑小文档。在页面加载期间不会渲染所有这些文档会降低用户体验。有没有办法加载和“按需”渲染该模态。
这种行为的标准做法是什么。
我知道rails的方法是为每个文档加载一个新页面,但我很好奇我能看到如何使这个工作。
我也标记了jQuery人群,因为这个库是我最熟悉的。
答案 0 :(得分:1)
我在我的应用中做了很多。这是我的某个应用中的反馈按钮的代码。
它创建对话框,当按下按钮时,会动态加载对话框的内容。
$(function () {
var button= $("#FeedbackButton");
if (button.length == 0)
button= $("<div id='FeedbackButton'>Feedback</div>").hide().appendTo("body");
var dialog = $("#FeedbackDialog");
if (dialog.length == 0)
dialog = $("<div id='FeedbackDialog'>Feedback</div>").hide().appendTo("body");
button.click(function () {
button.hide();
dialog.load("_FeedbackDialog.htm");
$(dialog).dialog({
title: "Feedback",
modal: true,
width: 800,
height: 300,
close: function () {
$(button).show();
}
});
});
});
答案 1 :(得分:1)
通过按需渲染模态,我假设您的意思是响应AJAX查询。在这种情况下,是的,有一种方法可以按需建立模态。您需要做的是设置一个事件监听器,对您的控制器进行AJAX调用。
# my_view.html
/* inside JS event trigger */
$.get("/get_modal.js")
然后在您的控制器中,响应该AJAX呼叫。
# my_controller.rb
def get_modal
respond_to do |format|
format.js # this will execute get_modal.js (or get_modal.js.erb)
end
end
你的“视图”,但不是HTML,它将是JS,让你自由地做任何想做的事。
# get_modal.js
/* JS modal code */