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'但它失败了。
答案 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