Im создавая сайт, который работает с ajaxRequest, когда я нажимаю ссылку, он будет загружаться с помощью ajaxRequest. Когда я загружаю, например, user/login UserController actionLogin, я renderPartial представление с processOUtput в true, поэтому js, необходимый в этом представлении, будет сгенерирован, однако, если у меня есть clientScriptRegister внутри что представление с событиями, как я могу избежать генерировать скриптRegistered дважды или несколько в зависимости от ajaxRequest? Я пробовал Yii::app()->clientScript->isSCriptRegistered('scriptId')
проверить, зарегистрирован ли script, но кажется, что если вы использовали ajaxRequest, результат всегда был false, потому что он будет прав только после завершения рендеринга.
Код контроллера
if (Yii::app()->request->isAjaxRequest)
{
$this->renderPartial('view',array('model'=>$model),false,true);
}
Просмотр кода
if (!Yii::app()->clientScript->isScriptregistered("view-script"))
Yii::app()->clientScript->registerScript("view-script","
$('.link').live('click',function(){
alert('test');
})
");
Если я впервые запрошу контроллер, он отлично работает (предупреждение 1 раз), но если я снова запрошу тот же контроллер, не обновляя мою страницу, и просто используя ajaxRequest, предупреждение выведет дважды, если вы щелкните по нему ( потому что он продолжает генерировать событие, хотя вы уже зарегистрировали его один раз)
Это то же самое, если в представлении с функцией jquery есть CActiveForm. Яркая текстовая форма corescript будет вызываться каждый раз, когда вы renderPartial.