弹出框不起作用 - 从控制器初始化时未加载 JS


Popover is not working- JS is not loaded when initialized from controller

我在表格中有数据列表并提供了一个弹出窗口。就像当指针悬停在该图像上时,它将弹出该数据的正文。在我分离该视图之前,它正在工作。我正在使用 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的一部分时,弹出窗口正在工作。然后我把它转移到另一个视图,接下来我知道,弹出框不起作用。

[更新]

所以我想问题不在这里。它在我的 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没有加载/初始化的原因是什么?

在很多方面,你可以加载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>

然后,将片段写入自定义.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();});
");

我使用方式 2。请尝试。祝你好运

原因是因为您必须在文档准备就绪后声明脚本,这是您的错误

$(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();
});