Nach einem Ajax-Aufruf rufe ich eine Funktion auf
$this->widget('zii.widgets.CListView', array(
'viewData'=>array('sent'=>$sent),
'dataProvider'=>$dp,
'pager' => array(
'prevPageLabel'=>'< Anterior',
'nextPageLabel'=>'Siguiente >',
'header'=>'Pagina: ',
'pageSize'=>5,),
'template'=>"{items}\n{pager}", //template
'itemView'=>'_messageView',
'emptyText'=>'No ha recibido ningun mensaje todavia',
'enablePagination'=>true,
'baseScriptUrl'=>'/../../Javascript/messages/messages.js',
'afterAjaxUpdate' => 'js:callFunction()',
'id'=>'listMessages',
));
Die Funktion callFunction() ist in einer separaten js-Datei definiert, die ich beim ersten Laden der Seite einbinde, wie folgt:
Die Funktion wird beim ersten Laden der Seite aufgerufen, aber nach einem Ajax-Aufruf wird sie nicht mehr aufgerufen. Ich vermutete, dass es daran lag, dass die message.js-Datei nicht gefunden werden konnte, also versuchte ich, sie erneut einzubinden, indem ich diesen Code zum CListView hinzufügte: 'baseScriptUrl'=>'/../../Javascript/messages/messages.js',
aber jetzt erhalte ich diesen Fehler: jQuery("#listMessages").yiiListView ist keine Funktion
... Irgendwelche Ideen?
Lösung
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$ligas,
'viewData'=>array('joinedArray'=>$joinedArray),
'template'=>"{items}", //template
'itemView'=>'_viewLiga',
'emptyText'=>'Usted todavia no se ha unido a ninguna liga',
'afterAjaxUpdate'=>'js:function(id, data) {myLigasListUpdated();}',
'enablePagination'=>false,
'id'=>'listViewMyLigas',
));
Das Problem lag in der Signatur der Funktion, die nach einem Ajax-Update aufgerufen werden musste. Es musste so sein, wie in der Lösung angegeben. Danke @jfriend00