2017-07-07 10:08:41 2038次浏览 1条回答 0 悬赏 10 金钱

使用modal将用户的详细信息页面变为模态窗口。每次打开页面第一次点击任意用户查看详情的按钮,能根据用户id显示其信息,但是之后点击其他按钮出现的模态窗口内容就和第一次的内容一样,试过写了一个其他无关的按钮,出现的也是同样的内容。
按钮代码

    $button = [
        'view' => function ($url) {
            return Html::a(
                '<span class="glyphicon glyphicon-search"></span>',
                $url,
                ['title' => '查看',
                    'id' => 'view',
                    'class' => 'modaldialog',
                    'data-toggle' => 'modal',//固定写法
                    'data-url' => Url::toRoute([$url]),
                    'data-target' => '#common-modal',
                ]

            );
        },
  • 回答于 2017-07-07 10:09 举报

    你打开的页面是不是都一个URl阿 这是关键

    9 条回复
    回复于 2017-07-07 10:16 回复

    好像是指向了同一个URL,但按钮的url是不同的,打开的模态窗总是只出现第一次点击url的内容,第一次点击不同的url的按钮,是都能出现对应的内容的。

    回复于 2017-07-07 10:17 回复

    你看下你生成的html代码应该就知道咋回事了

    回复于 2017-07-07 10:25 回复

    看了按钮的url都是正确的,页面没有转化为模态窗之前叶都是能正确跳转的,就是加了modal插件之后出现了这样的问题,modal窗口能弹出对应的内容,就是点一次之后就只能出现第一次点的内容了,还有就是modal里的head和foot都是一直消失的,写了JS代码也不执行,不知道怎么回事。

    回复于 2017-07-07 10:31 回复

    总感觉是你这个$url 参数拐带的

    回复于 2017-07-07 10:35 回复

    那要怎么改啊

    回复于 2017-07-07 10:38 回复

    你写个jquery 先

    $(".modaldialog").click(function(){ 
            aUrl = $(this).attr('data-url');
            aTitle = $(this).attr('data-title');
            console.log(aTitle);
            console.log(aUrl);
            
            $($(this).attr('data-target')+" .modal-title").text(aTitle);
            $($(this).attr('data-target')).modal("show")
                 .find(".modal-body")
                 .load(aUrl); 
            return false;
       }); 
    
    回复于 2017-07-07 10:47 回复

    我一开始就是用的这段jquery,没用的,并没有执行。
    `
    <?php
    Modal::begin([

      'id' => 'common-modal',
      'header' => '<h4 class="modal-title"></h4>',
    'footer' =>  '<a href="#" class="btn btn-primary" data-dismiss="modal">关闭</a>',
    

    ]);

    $js = <<<JS
    $(".modaldialog").click(function(){
    aUrl = $(this).attr('data-url');
    aTitle = $(this).attr('data-title');
    console.log(aTitle);
    console.log(aUrl);

        $($(this).attr('data-target')+" .modal-title").text(aTitle);
        $($(this).attr('data-target')).modal("show")
             .find(".modal-body")
             .load(aUrl);
        return false;
    

    });
    JS;
    $this->registerJs($js);

    Modal::end();
    ?>
    `

    回复于 2017-07-07 10:51 回复

    这样registerJs 会报错吧 你jquery是在什么位置,你看网页源码 这代码是不是在引入jquery后面,还有就是你会用前端工具吗 debug 看看就知道了

    回复于 2017-07-07 11:02 回复

    好的,谢谢您了。

您需要登录后才可以回答。登录 | 立即注册
Soul丶
职场新人

Soul丶

注册时间:2017-06-04
最后登录:2017-12-10
在线时长:3小时45分
  • 粉丝0
  • 金钱40
  • 威望0
  • 积分70

热门问题