3

我正在尝试调用文件名的 afterAjaxUpdate 参数在另一个 js 文件中定义的函数,但我在控制台中收到错误,该函数未定义

<?php 
$dataProvider=new CActiveDataProvider('profiles',array('pagination'=>array('pageSize'=>3))); ?>
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_profilesview',
'template'=>'{sorter}<br />{pager}{items}{pager}',
    'enableSorting' => true,
    'sortableAttributes'=>array(
     'name'=>'By firstName',
     'location'=>'By city',
     'age'=>'By age',
     'likes'=>'By likes'
     ),
     'afterAjaxUpdate'=>'readcookie()',
));
 ?>

我的js函数是

$(document).ready(function(){
   function readcookie()
   {
       alert("hi");
   }
});

我可以在我的源代码中看到,文件中定义的函数包含在 yii 默认包含的所有 js 文件之后导致触发我的事件我也尝试通过设置

renderPartial('Mybelowview',null,false,true)

这再次导致我的 js 文件包含多次,并且我的事件被多次触发。

这非常令人困惑,请帮助摆脱它谢谢大家的慷慨

4

1 回答 1

3

问题是内部$(document).ready();的函数超出了它的范围,这就是你得到undefined的原因。因此,您可以只拥有:

// $(document).ready(function(){
   function readcookie()
   {
       alert("hi");
   }
// });
// omit document.ready to make function available in the global scope

或在窗口对象上定义函数以使其全局:

$(document).ready(function(){
   window.readcookie=function ()
   {
       alert("hi");
   };
});

最后将属性定义'afterAjaxUpdate'为:

'afterAjaxUpdate'=>'readcookie'
// if it is readcookie() it becomes a function call instead
于 2012-06-11T08:12:43.127 回答