【问题标题】:Laravel 5.1 format date array for chart.js data用于 chart.js 数据的 Laravel 5.1 格式日期数组
【发布时间】:2016-02-09 18:26:49
【问题描述】:

抱歉,我现在无法上传我的控制器代码,但我希望你能帮助我提供给你的信息。

我正在使用chart.js 绘制数据的折线图。我正在从我的控制器传递数据点的值以及与日期点匹配的日期。日期标签在x 轴上,数据点在y 轴上。

在我看来,我从控制器接收到以下数组:

["2015-06-01","2015-05-01","2015-04-01","2015-03-01","2015-02-01","2015-01-01"]

然后将其编码为 JSON。现在,我应该尝试将日期格式设置为在控制器内还是在视图内更具可读性?

编辑

这是我将体重数据发送到视图的代码:

$weight = Weight::where(compact('user_id', 'gecko_id'))->orderBy('weighed_date', 'desc')->take(7)->get()->reverse();

然后

return view('gecko.show')
            ->with('gecko', $gecko)
            ->with('dates', $weight->lists('weighed_date'))
            ->with('amounts', $weight->lists('gecko_weight'));

【问题讨论】:

  • 据我所知,视图只负责显示数据。因此,您应该在控制器上格式化日期。或者,您可以在模型上使用查询范围。

标签: laravel laravel-5.1 chart.js


【解决方案1】:

如果您只是想在演示文稿中更改它,我会说它本身的格式为ChartJS。如果您查看此question,我们会发现我们可以使用类似的东西来格式化数据点的标签。

scaleLabel: function (valuePayload) {
    return Number(valuePayload.value).toFixed(2).replace('.',',') + '$';
}

现在你可以做类似的事情

scaleLabel: function (value) {
    return moment(value).format("ddd, hA"); ;
}

以一种很好的方式格式化日期。在这种情况下使用momentjs

警告:以上内容未经测试我从未使用ChartJS 做过此操作,但理论上它应该可以工作。

【讨论】:

  • 嘿,马克,谢谢。我会在午休时试一试。我的date 标签横跨x 轴。这仍然有效吗?查看代码 scaleLabel 似乎是y 轴,还是我弄错了?
  • 啊,你说得对,安迪,等我有时间我会看看是否可以更新 x 轴。我知道如何使用 5 个不同的图表库来做到这一点,只是从未使用过 ChartJS,所以不确定它的所有功能。
  • 没问题 :) 感谢您的浏览
【解决方案2】:

我设法实现这一点的唯一方法是在将日期发送到我的视图之前在我的控制器中格式化日期。稍后我不工作时会发布代码:)

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多