首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图表、Yii和车身内容重装

图表、Yii和车身内容重装
EN

Stack Overflow用户
提问于 2014-06-30 13:45:14
回答 2查看 764关注 0票数 0

我有一个视图,可以在CListView和高级图表中呈现一些数据。

请注意,CListView的寻呼机工作方式如下:它向服务器请求“新页面”,服务器呈现页面的整个内容并将其发送给CListView。然后将正文替换为正在发送的内容,类似于这样的内容:$('body').html(rendered_html_response)

我还有一个模仿这种行为的dropDownList。这是代码:

代码语言:javascript
复制
<?php
    echo CHtml::dropDownList('usage', 'cg', array(
        'd'=>'Daily',
        'm'=>'Monhly'
    ), array(
        'ajax'=>array(
            'type'=>'POST',
            'url'=>$this->createUrl('admin/user', array(
                'id'=>$user->id)
            ),
            'update'=>'body',
            'data'=>array('cg'=>'js:$(this).val()'), 
            'options'=>array(
                Yii::app()->session['cg']=>array(
                    'selected'=>true
                )
            )
        )
    ));
?>

不管怎样,有个问题。当我使用CListView时,一切都很正常(比如:页面内容被刷新,页面被重新加载,图表和数据被正确呈现等等),但是当我选择使用dropDownList的内容时,服务器呈现答复并发送给客户端,客户端开始替换body的内容,但是我得到了这个错误:http://www.highcharts.com/errors/16

我试着用这种方式禁用highcharts.src.js

代码语言:javascript
复制
public function beforeAction(){
    if(Yii::app()->request->isAjaxRequest){
        Yii::app()->clientScript->scriptMap['highcharts.src.js'] = false;
    }
    return true;
}

但是,我得到了典型的undefined javascript错误(这意味着有东西试图使用Highcharts,这是没有定义的)。

问题在哪里,我如何解决?

EN

回答 2

Stack Overflow用户

发布于 2014-06-30 14:07:36

代码语言:javascript
复制
//init
$('#container').highcharts({});
//select onchange
$('#container').highcharts().destroy();
票数 0
EN

Stack Overflow用户

发布于 2014-06-30 14:44:14

如下所示,错误链接显示

已在页面中定义的高级图表 当第二次在同一页面中加载High图表或Highstock时,就会发生此错误,因此就已经定义了High图表命名空间。请记住,Highcharts.Chart构造函数和High图表的所有功能都包含在Highstock中,因此,如果您同时运行图表和StockChart,则只需加载highstock.js文件。

您将加载高级图表javascript两次。你可以试试

( a)在第一次加载时启用高级图表,然后在下一次加载时禁用它,例如可能检查ajax是否

( b)使用自定义javascript检查是否像在这篇博客文章中加载了高级图表

c)使用为您处理js和css加载的NLSClientScript扩展

我建议你用最后一个。我被这个问题咬了好几次,直到我发现它。它消除了单独列出每个javascript函数/文件的需要。

编辑

与编辑listview js不同,您可以编辑代码以使用相同的update函数:

代码语言:javascript
复制
<?php
    echo CHtml::dropDownList('usage', 'cg', array(
        'd'=>'Daily',
        'm'=>'Monhly'
    ), array(
        'onChange'=>'$.fn.yiiListView.update("your-list-id", {
            data: {"usage":$(this).val()},
            type: "POST"
        });'
    ));
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24491578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档