1

据我目前了解,jquery modals 在页面加载期间呈现,并由用户通过 hidden=true 到 hidden=false 值触发。

这一切都很好而且很花哨,并且当模式保持在每页的最低限度时效果很好。但是,这是我的问题,如果您有一个完整的模态列表,当您单击它时会弹出一个要编辑的信息模态列表。例如,一个文档网格,您希望单击一个文档并弹出一个模式来编辑小文档。在页面加载期间不会呈现所有这些文档会降低用户体验。没有办法“按需”加载和渲染该模式。

这种行为的标准做法是什么。

我知道 Rails 的方法是为每个文档加载一个新页面,但我很想知道如何才能完成这项工作。

我也标记了 jQuery 人群,因为这个库是我最熟悉的库。

4

2 回答 2

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();
            }
        });
    });
});
于 2012-05-31T14:19:51.560 回答
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 */
于 2012-05-31T18:23:52.350 回答