Yii renderpartial (proccessoutput = true)Избегайте повторяющихся js-запросов

Я создаю сайт, который работает с ajaxRequest, когда я нажимаю на ссылку, он загружается с использованием ajaxRequest. Когда я загружаю, например, user/login UserController actionLogin , я renderPartial представления с processOUTput в true , поэтому js, необходимые внутри этого представления, будут сгенерированы, однако, если у меня есть clientScriptRegister внутри этого представления с событиями, как я могу избежать создания scriptRegistered дважды или несколько раз в зависимости от ajaxRequest? Я попытался Yii::app()->clientScript->isSCriptRegistered('scriptId')проверить, зарегистрирован ли скрипт уже, но кажется, что если вы использовали ajaxRequest, результат всегда будет ложным , потому что он будет истинным только после завершения рендеринга.

Код контроллера

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, предупреждение будет выведено дважды, если вы нажмете на него (, потому что оно продолжает генерироваться, даже если вы уже зарегистрировали его один раз)

То же самое, если у вас есть CActiveForm внутри представления с функциональностью jquery.. основной скрипт yiiactiveform будет вызываться каждый раз, когда вы выполняете renderPartial.

10
задан butching 17 April 2012 в 09:14
поделиться