2013-07-27 89 views
1

在我的代碼中,我使用了CGridView並通過ajax調用多次呈現它以向用戶列出不同類型的數據。在其列之一,我有一個CButtonColumn負責運行javascript function.it是我列代碼:CGridView引發多個點擊事件

array(
      'class' => 'CButtonColumn', 
      'template' => '{archive}', 
      'buttons' => array(
       'archive' => array(
        'url' => 'Controller::createUrl("/form/sendToArchive", array("flowId" => $data->id))', 
        'label' => Yii::t('app', 'Archive'), 
        'click' => 'function(){sendToArchive(this.href);return false;}', 
        'imageUrl' => '/themes/negin/images/archive.png', 
        'visible' => '$data->canBeArchived() ? true : false', 
       ), 
      ), 
     ), 

我的問題是一個普遍的問題,但我仍然沒有它的任何好的解決方案。每次ajax調用後,CGridView都會呈現並且我的click事件會多次綁定到CButtonColumn。如何防止CGridView這種行爲?

回答

0

首個解決方案:

一個我沒有發現這樣的問題的最佳解決方案之一是,你必須使用動態ID爲按鈕,這樣當它加載在Ajax響應&綁定到JavaScript函數,事件總是綁定新的ID,所以他們只會一次點擊。

您可以使用帶有按鈕ID的time()使其成爲動態。

或者

第二種解決這樣的問題也不是那麼容易讓它實用,這是好多了。

始終以ajax調用以json格式響應您的數據,請勿包含任何html或javascript代碼。 通過使用jQuery或任何客戶端腳本語言從json響應在客戶端創建視圖。 JSON是輕量級的&他們是沒有html & js數據所以你的ajax響應會更快,它也將提高你的應用程序性能。