Popover无法正常工作 - 从控制器初始化时未加载JS

时间:2013-11-05 00:43:10

标签: php jquery twitter-bootstrap yii popover

我在表格中有数据列表并提供了一个弹出框。就像指针悬停在该图像上一样,它将弹出该数据的主体。在我分开这个观点之前它正在工作。我正在使用yii。

这是我的表格代码:

    <tbody>
        <?php foreach ($page_data['data_list']as $data_from_controller_key => $data_from_controller){?>
        <tr>
            <td>
                <a style="cursor:pointer;" . . . .><?php echo $data_from_controller['title'] ?></a>
            </td>
            <td>
                 <div rel="popover" data-trigger="hover"  
                     data-placement="left" data-content="<?php echo $data_from_controller['content'] ?>" >
                    <a class="btn btn-small" data-toggle="modal"><i class="icon-search"></i></a> 
                </div>
            </td>
        </tr>
        <?php } ?>
    </tbody>

当此视图仍然是我index.php的一部分时,popover正在运行。然后我把它转移到另一个视图,接下来我知道,popover不起作用。

[UPDATE]

所以我猜问题不在这里。这是我的JS加载。 我的JS没有加载到这个视图中。就像我datatables.js发生的事情一样。 我尝试在这个视图中将JS放在底部以应用JS,因为从控制器初始化它将没有任何好处:

    <script>
            $('table#listdata').dataTable({
                "sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
                "aoColumnDefs": [
                    { "bSortable": false, "aTargets": [1] }
                ],
                "bStateSave": true
        }).columnFilter();
    </script>

我的新问题是我的JS未加载/初始化的原因是什么?

2 个答案:

答案 0 :(得分:0)

在许多方面,您可以加载js代码段。

方式1: 您可以在主题的主文件底部编写此片段。即在</body> </html>标签之前。

方式2:

您可以在主题的主文件底部包含自定义js文件。即检查以下代码:

  • 如果您使用Yii默认主题:

<script src="<?php echo Yii::app()->request->baseUrl; ?>/assets/js/custom.js"></script>

  • 如果您使用自定义主题:

<script src="<?php echo Yii::app()->theme->baseUrl; ?>/assets/js/custom.js"></script>

然后,在custom.js文件的函数中编写片段,即

function tableSorter(){

$('table#listdata').dataTable({
    "sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
    "aoColumnDefs": [
        { "bSortable": false, "aTargets": [1] }
    ],
    "bStateSave": true
}).columnFilter();
}

现在为特定控制器或特定操作或特定视图调用该函数。在您的阶段,您应该为特定视图调用函数,只需打开您需要的视图文件并在文件顶部写下面的代码:

Yii::app()->clientScript->registerScript('tablesorter', "
$(function() { tableSorter();});
");

我使用Way 2.请尝试。祝你好运

答案 1 :(得分:0)

原因是因为你必须在文件准备好之后陈述你的脚本,这是你的错误

$(document).ready(function(){
        $('table#listdata').dataTable({
                "sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
                "aoColumnDefs": [
                    { "bSortable": false, "aTargets": [1] }
                ],
                "bStateSave": true
        }).columnFilter();
});