带有CStarRating的zii.widgets.CListView不会在分页时重新加载星号jquery

时间:2014-07-01 13:02:16

标签: php jquery yii

Houdi!

我有一个Yii网页,我列出了一堆我喜欢的产品:

 $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_listareProduse',  ));

并且在_listare产品中我正在加载星级评分小部件,如下所示:

$criteria = new CDbCriteria;
                $criteria->condition = "product_id='".$data->product_id."'";
                $rating = Rating::model()->findAll($criteria);

        echo CHtml::beginForm();
        $this->widget('CStarRating',array(
                'name'=>'rating',
                'value'=> $rating[0]->rating,
                'readOnly'=>true,
                ));
        echo CHtml::endForm();

当我加载页面时,所有加载都很好,在我从分页中打了一个数字或者下一个/上一页后它会进行分页但是CStarRating无法加载

知道为什么吗?试图把'id'=>在ClistView中'#qwerty'但它失败了。

1 个答案:

答案 0 :(得分:1)

那是因为你正在用ajax加载页面,你在页面加载时加载js进行评级(通过widget调用)这段js不知道DOM已经改变了,所以你必须重新初始化{ {1}}小部件,您可以将其添加到CStarRating

ListView

此外,您需要更改 $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_listareProduse', 'afterAjaxUpdate'=>'js:function(){ $("[id^=rating] > input").rating({"readOnly":true}); }', )); ,因为您使用相同的ID"评级"对于所有评级,如您所知,id在HTML中应该是唯一的。我已经添加了行的ID以及评级,因此您将评级1评级2等,如果您希望使用其他密钥,请记得相应地调整itemView电话

afterAjaxUpdate