【问题标题】:Dynamic series legend in Knockout-Kendo ChartKnockout-Kendo Chart 中的动态系列图例
【发布时间】:2014-02-27 16:56:10
【问题描述】:

我有一个对象集合,其中包含需要显示为动态剑道图表的数据。我正在使用带有 KO observablearray 的 Niemeyer 的 Knockout-Kendo 库。我使用相对值将数据绘制到剑道图表上,但我需要显示与数据关联的实际文本值。 Kendo 有一个模板属性可以做到这一点,但我遇到了一个障碍,使它在 Knockout-Kendo 库中工作。

小提琴
这是a functioning Fiddle 的数据

目标
使用查找值显示在图表的 ValueAxis 和 ToolTip 中

参考文献
Kendo Label Template docs
Kendo Chart with a function for label example
Niemeyer Knockout-Kendo Chart docs

数据片段

var theData =[{
    "TrackerName": "Fruits",
    "Trackers": [{
        "TrackerName": "Fruits",
        "TrackerDate": "2014-02-12T00:00:00",
        "OptionText": "5-7 servings",
        "RelativeValue": 3
    },
    {
        "TrackerName": "Fruits",
        "TrackerDate": "2014-02-13T00:00:00",
        "OptionText": "5-7 servings",
        "RelativeValue": 3
    },
       etc];

HTML 和数据绑定

<div data-bind="foreach:AllTrackers">
    <h3 data-bind="text:TrackerName"> </h3>
    <!-- ko with: Trackers -->
    <div data-bind="kendoChart:
                    {
                        data: $data,
                        chartArea: {
                            height:100
                        },
                        series: [
                            {
                                type: 'line',
                                style:'smooth',
                                field: 'RelativeValue',
                                markers: {
                                    visible: true,
                                    background: '#c0c0c0',
                                    size: 10
                                },
                                tooltip: {
                                    visible: true,
                                    background: '#f0f0f0'
                                }
                            }],
                        seriesColors: ['midnightblue'],
                        valueAxis: {
                            labels: {
                                template: 'Help #=value#'
                            },
                            line: {
                                visible: false
                            },
                            min: 1,
                            max: 4,
                            majorUnit: 1
                        }
                        ,
                        categoryAxis: {
                            categories:$parent.CategoryDates,
                            majorGridLines: {
                                visible: false
                            }
                        }
                    }">
    </div>
    <!-- /ko -->
</div>

【问题讨论】:

    标签: knockout.js kendo-ui knockout-kendo kendo-chart


    【解决方案1】:

    您必须全局公开您的辅助函数,以便 Kendo 模板代码可以找到它。 fiddle JS代码在onload函数中运行,所以你的getOptionText函数不是全局的。

    你可以这样做:

    window.myApp = {
        helpers: {
            getOptionText: function(q ){
                //these are not the real values, but you get the idea
                if(q===1){
                    return 'Bare minimum';
                }
                if (q ===2){
                    return 'Some effort ';
                }
                if (q ===3){
                    return 'Good  ';
                }
                if (q ===4){
                    return 'Great ';
                }
            }
        }
    };
    

    然后,使用如下模板:'#=myApp.helpers.getOptionText(value)#'

    http://jsfiddle.net/rniemeyer/X2WBL/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      相关资源
      最近更新 更多