2013-11-12 3 views
0

Я загрузка формы (в зависимости от выбранного варианта в DropDownList) с ajaxcall (который вызывает renderPartial)
ajaxcall выглядит как:Javascript для виджета CActiveForm ISNT доступен после renderPartial

$("#dropDownList").change(function() { 
     var selected = $(this).val(); 

     $.ajax({ 
      url: "index.php?r=item/update&category="+selected, 
      cache: false, 
      success: function(html){ 
       $("#inputs").html(html); 
      } 
     }) 
    }); 

Акция «обновление»:

public function actionUpdate($category){ 
    $model = new Item; 

    $this->renderPartial($category, array(
     'model'=>$model, 
    ), false, true); 
} 

форма будет renderd в сНе «вход», без каких-либо проблем, но до сих пор нет Javascript для формы. Я уже использовал

Yii::app()->clientScript->scriptMap['jquery.js'] = false; 

, чтобы предотвратить, что jquery будет загружен дважды. Но для моей формы все еще нет js (jquery.yiiactiveform.js).

Редактировать: Я проверил свой firebug, что jquery.yiiactiveform.js будет загружен после ajaxcall (опять?). - Если я использую:

Yii::app()->clientScript->scriptMap['jquery.yiiactiveform.js'] = false; 

jquery.yiiactiveform.js разве доступны больше, поэтому он не должен быть загружен в два раза?

ответ

1

Ваша проблема в основном заключается в перезагрузке скриптов. JQuery беспорядок все очень много, но другие скрипты, такие как YiiActiveForm, также могут испортить ваше приложение. Лучше всего, если вы можете предварительно загрузить все необходимые скрипты на странице, которую вы вызываете ajax, и отключить скрипты на страницах, которые вы загружаете с помощью ajax. Возможно, вы захотите посмотреть расширение EUpdateDialog (отказ от ответственности: написанный мной), он может дать вам несколько дополнительных идей.

+0

Если я загружаю сценарии в своем представлении с помощью ajaxcall, сценарии будут существовать дважды (в этом представлении), поэтому он вообще не работает. Думаю, – spyfx

+0

Из моего личного опыта при работе с аналогичной задачей для вас проблема с перезагрузкой. jQuery всегда дает проблемы, но затем другие скрипты перезагружаются, иногда они создают проблемы. Самое простое решение - отключить их в scriptMap. У моего коллеги также была аналогичная проблема, поэтому он нашел некоторое расширение, которое отключает скрипты, если они уже загружены, но я не могу вспомнить имя расширения, поэтому вам может понадобиться выкопать расширения Yii. –