我注意到這是文件../vendor/sonata-project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Resources/views/CRUD/edit_orm_one_association_script.html.twig,它創建一個新的行時你點擊鏈接添加,特別是在這樣的代碼:如何在Sonata Type Collection中創建新行後添加javascript?
// the ajax post
jQuery(form).ajaxSubmit({
url: '{{ url('sonata_admin_append_form_element', {
'code': sonata_admin.admin.root.code,
'elementId': id,
'objectId': sonata_admin.admin.root.id(sonata_admin.admin.root.subject),
'uniqid': sonata_admin.admin.root.uniqid
} + sonata_admin.field_description.getOption('link_parameters', {})) }}',
type: "POST",
dataType: 'html',
data: { _xml_http_request: true },
success: function(html) {
jQuery('#field_container_{{ id }}').replaceWith(html); // replace the html
if(jQuery('input[type="file"]', form).length > 0) {
jQuery(form).attr('enctype', 'multipart/form-data');
jQuery(form).attr('encoding', 'multipart/form-data');
}
jQuery('#sonata-ba-field-container-{{ id }}').trigger('sonata.add_element');
jQuery('#field_container_{{ id }}').trigger('sonata.add_element');
}
});
return false;
};
我想知道我怎麼能實現觸發:
jQuery('#field_container_{{ id }}').trigger('sonata.add_element');
要添加JavaScript!在Sonata Type Collection中創建新行後。
在文檔中提到: 提示:jquery事件在添加行(添加了sonata-collection-item)或刪除(sonata-collection-item-deleted)之後觸發。你可以綁定到他們觸發一些自定義JavaScript導入到您的模板(例如:添加一個日曆小部件到一個剛添加日期字段)
任何幫助,歡迎!
對不起'.live()'方法。完全忘了。是的,如果您可以通過參數觸發'sonata.add_element',則可以更輕鬆地獲取上下文數據,但默認觸發器不會發送任何數據。 – TautrimasPajarskas