问题
I'm using Twitter Bootstrap modal featurs and loading data from remote locations. I'm providing the remote url for a set of thumbnails with the hope that once the thumbnail is clicked, the appropriate data (a large version of the image) is displayed. I'm using the html declarative style to define the remote urls and all the features of the modal.
What I find is that Twitter bootstrap modal loads first remote url then does not display subsequent remote data, (although a request to the proper url is made in Chrome) but displays first loaded data always. How do I get it to show the proper data?
View:
#gallery-navigation
%ul
- @profile.background_images.each do |image|
%li
= link_to image_tag(image.background_image.url(:thumb)), remote_image_path(image.id), :role => "button", :data => {:toggle => "modal", :target => "#image-modal", :remote => remote_image_path(image.id)}
/ Modal
#image-modal.modal.hide.fade(role="dialog" aria-hidden="true" data-backdrop="true")
.modal-body
Controller:
def remote_image
@image = current_user.profile.background_images.find(params[:image_id])
respond_to do |format|
format.html {
render :partial => "remote_image", :locals => { :image => @image }
}
end
end
回答1:
The plugin doesn't actually load the wrong data, it only loads the first call. Why ?
Because the remote loading is only done in the constructor of the plugin : constructor source on github
And there is only one call to the constructor per modal (in its normal behavior) : singleton source on github
IMHO, the remote option is more like an extra, non-essential-at-all, not-even-related-to-the-modal-plugin option. It can be very useful though.
And it's very easy to reproduce the same behavior with very little code, and as much remote loading as we want : Demo (jsfiddle)
<a data-toggle="modal" data-load-remote="/some.url" data-remote-target="#myModal .modal-body" href="#myModal" class="btn">Btn 1</a>
$('[data-load-remote]').on('click',function(e) {
e.preventDefault();
var $this = $(this);
var remote = $this.data('load-remote');
if(remote) {
$($this.data('remote-target')).load(remote);
}
});
来源:https://stackoverflow.com/questions/13104919/twitter-bootstrap-modal-loads-wrong-remote-data