我正在尝试在 rails 3 应用程序中使用 turbolinks。一切都很好,除了 Alertify 在页面更改后停止工作。
我已经安装了 jquery-turbolinks gem 来修补它,但这没有任何效果。
我也尝试过包装 alertify 函数并在 page:change 上触发它,但同样没有乐趣。
有人对 turbolinks 有问题吗?
我正在尝试在 rails 3 应用程序中使用 turbolinks。一切都很好,除了 Alertify 在页面更改后停止工作。
我已经安装了 jquery-turbolinks gem 来修补它,但这没有任何效果。
我也尝试过包装 alertify 函数并在 page:change 上触发它,但同样没有乐趣。
有人对 turbolinks 有问题吗?
任何使用 Alertify 0.4.0(当前为 RC1)遇到此问题的人都可以通过重置您正在使用的 Alertify 元素来解决此问题。就我而言,它是 Alertify.dialog:
Alertify.dialog.el = false
// Do your normal JS stuff
在我对此的粗略理解中,Alertify 认为已经创建了一个对话框元素,但是当 Turbolinks 加载页面时,它会破坏该元素。我们需要告诉 Alertify 它已被销毁,Alertify 将重新创建它。
如果您需要任何有关细节的帮助,请告诉我。
据我所知,Turbolinks 与全局范围混淆,这会阻止警报与 DOM 正确连接。
因此,我的工作是:
//Keep global reference to alertify init() function
$(document).on('ready',function(){
window alertifyInit = alertify.init;
});
//re-initialise on page change/load
$(document).on('page:change page:load',function(){
alertifyInit();
});