簡體   English   中英

Rails 4,Turbolink渲染部分后執行javascript

[英]Rails 4, Turbolink execute javascript after render a partial

我有一個配置了一些javascript的表單。 在Turbolink處理的load事件中加載了javascript:

//app/assets/javascripts/init.js
var ready = function () {
    App.init(); //I configure some components of _form.html.erb partial
};
$(document).ready(ready);
$(document).on('page:load', ready);

如果我渲染部分,則App.init()代碼不會執行,並且我的應用程序配置不正確。

//new.js.erb
$("#my-modal").html("<%= j( render 'form') %>");
$("#my-modal").modal("show"); //The partial is inside a modal

部分渲染后我可以執行代碼嗎? 像這樣的東西:

$(document).on('partial:render', ready); //Concept

部分渲染后需要執行js代碼因為我需要配置一些Jquery插件來自定義模態形式。

模態是一個經典的Twitter Bootstrap模式:

//_form.html.erb
<div class="modal-dialog" role="document">
  <div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
        <span aria-hidden="true">&times;</span>
      </button>
      <div class="row">
        <div class="col-sm-offset-3 col-sm-9">
          <h3 class="modal-title" id="myModalLabel">new</h3>
        </div>
      </div>
    </div>

    <%= simple_form_for(...) do |f| %>
        <div class="modal-body">
          <ul class="errors"></ul>
          <%= f.error_notification %>

          <%= render "companies/fields", f: f %>
          ...
          ...
        </div>
    <% end %>
  </div>
</div>

嘗試:

$(document).on('page:change', function () {
  // Actions to do
});

在你的情況下,簡單地用你的js調用替換'page:load'行:

$(document).on('page:change', ready);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM