0
私はpjaxの初心者ですが、私がそれを実装する方法が正しいかどうかはわかりません。私はたくさんのjqueryを持つ古いプロジェクトを持っていました。ちょっと整理するために、私が従った方法は、各ページの本文に一意のIDを割り当てることでした。<body id="Login">
私のレイアウトでは、私はコードを書かれていた:今、各ページの読み込み時に、コードのみがページに必要な
var Login = (function() {
var funct = {};
//any variables, only required on this page
funct.someFunction = function(){
//code
}
funct.init = function(){
//all the functions that are to be called on page load
}
return funct;
})();
:ページの特定のjqueryのために
var page = $('body').attr('id');
if(page !== '' && typeof self[page] != 'undefined')
self[page].init();
を、私はこのような何かを書いていました実行される。しかし、私は今、pjaxリンクへのリンクのほとんどを作っています。だから、ログインページに、リンクがある:
<a data-pjax href="/register">Register</a>
とレイアウトは、コードを持っています
$(document).pjax('a[data-pjax]', '#pjax-container');
これは、レジスタページを開きます。しかし、ボディIDはまだ"ログイン"だったので、Register.init()をロードしませんでした。
どのようにしてこれを取得できますか?
私はpjaxを使用したことがないが、ページの変更はあなたがevent.target
で何かを行うことができるはず
$(document).on('pjax:end', function(event) {
//
})
完了した後に、そのマニュアルに従って、あなたはいくつかのコードを実行するためにイベントリスナーを追加することができ、うまくいけばべき
返信いただきありがとうございます。私は似たようなやり方をしました。私は、すべてのpjaxリンクにデータロード属性を追加しました。これは、トラッページページの本体IDを受け取り、それに応じて関連するJSをロードします。しかし、それは私の問題を解決し、ページはpjaxとnon-pjaxモードの両方で動作するようになりましたが、私はそれが最も洗練された解決策ではないと感じています。その答えを得るために私の質問をCodeReviewに移すかもしれません。ご協力いただきありがとうございます。 – gentrobot
P .:私が「最もエレガントではない」と言うとき、それは私のアプローチと私のコードです。あなたが提案した解決策とは関係ありません。 :) – gentrobot