经过几次尝试,我终于做出了想要的行为。这比我预期的要难,也许有更简单的方法,但我有我所拥有的。
所以,我用
div.keys
CListView 用于提供更新的 url 数据。
每次用户添加或删除评论时,我们调用更新方法
$.fn.yiiListView.update('commentsList');
这需要来自 div.keys 的标题属性。所以我决定在调用更新方法之前手动更改标题属性。我还需要有关总页码的信息,所以我将类添加到我的 commentsList
$this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'/comment/_comment',
'id'=>'commentsList',
'htmlOptions' => array(
"class"=>$pager->pageCount,
),
));
我编写了获取所有信息的函数
var getUrlInfo = function() {
var divKeys = commentsBlock.find('div.keys'),
keys = divKeys.attr('title'),
currentPage = "",
lastPage = parseInt (commentsBlock.find('#commentsList').attr('class')) +1,
temp = keys.lastIndexOf("page=") + 5,
pageNumberIndex = temp;
while ( !isNaN(parseInt(keys[temp])) ) {
currentPage +=keys[temp];
temp++;
};
return {'divKeys':divKeys, 'keys':keys, 'currentPage':currentPage, 'lastPage':lastPage, 'pageNumberIndex':pageNumberIndex};
};
之后,我设置规则来更改标题属性以添加评论 var urlInfo = getUrlInfo(); if (urlInfo.currentPage.length) { urlInfo.divKeys.attr('title', urlInfo.keys.slice(0,urlInfo.pageNumberIndex) + urlInfo.lastPage + urlInfo.keys.slice(urlInfo.pageNumberIndex + urlInfo.currentPage.长度) ); }
else {
if (urlInfo.keys.indexOf('ajax')>0)
{
urlInfo.divKeys.attr('title', urlInfo.keys + "&page=" + urlInfo.lastPage);
}
else urlInfo.divKeys.attr('title', urlInfo.keys + "?page=" + urlInfo.lastPage);
}
和删除评论功能
var urlInfo = getUrlInfo();
if (!urlInfo.currentPage.length) {
console.log('da');
if (urlInfo.keys.indexOf('ajax')>0)
{
urlInfo.divKeys.attr('title', urlInfo.keys + "&page=" + urlInfo.lastPage);
}
else urlInfo.divKeys.attr('title', urlInfo.keys + "?page=" + urlInfo.lastPage);
}
我还为我的 view.php 设置了这个规则
if(!Yii::app()->request->getQuery('ajax') && !Yii::app()->request->getQuery('page')) {
$pager->currentPage=$pager->pageCount;
}