私は、デフォルトでは誰の目にも見えるコンテンツである単一ページアプリケーションを作成しようとしていますが、管理者がリフレッシュせずにページを変更できるようにいくつかのコンテンツを追加してください。動的に挿入された要素に要素を追加
私がこれを達成する方法は、2つのスクリプトを読み込むことです.App.jsはデフォルトの動作用で、adminの場合はadmin.jsファイルに読み込みます。 admin.jsでは、動的にロードされたコンテンツを、管理者のためのボタン、フォームなどの特定のコントロールに読み込むように変更したいと考えています。
このSPAでは、jQueryとhandlebars.jsを使用して、コンテンツがAPIからのデフォルトビューで読み込みます。
app.js:admin.jsで今
$.ajax({
url: "api.php?type=packages"
}).done(function(res) {
const obj = $.parseJSON(res);
const category = 766773;
$.each(JSON.parse(obj)['payload'], function(k, v) {
if (v.category == category) {
const context = {
packageName: v.name,
packageId: v.id
};
const source = $('#item-template').html();
const template = Handlebars.compile(source);
const html = template(context);
$('#items').append(html);
}
});
});
、これまでのところ、私はすでに動的なコンテンツが何であるかに追加しようとしています:
function initAdminControls() {
var editBtn = $('<a class="waves-effect waves-light btn red darken-2"><i class="material-icons">grade</i>Edit</a>');
$('.btn-container').append(editBtn);
}
initAdminControls();
は働いていません。動的なコンテンツがロードされた後、私はそれを使用するかどうかはわかりませんが、私は.on()
があることを知っている機能は、(console.log
でテスト)を実行したがために、動的要素で、リンクが.btn-container
に追加しません私は他のオプションが何であるか分かりません。 .btn-container
がすでに動的に追加されているときに
は、だから私の質問は、どのように私は.btn-container
に私の新しい<a>
要素を追加することができますか?
ここにはthe project私が取り組んでいるのは:。
$(ドキュメント).find( '.btn-container') – Kontsnor
$(ドキュメント).on( 'クリック'、 '.btn-container '、function(){ // do stuff}); – Gerard
"done"コールバックは、ajaxリクエストが応答を受け取るまで呼び出されないため、おそらくタイミングの問題です。 admin.jsロジックはおそらく、 "done"コールバックが呼び出される前に実行されています。 – pacifier21