我有角度范围变量,也用于ng-repeat。我想创建一个图表,从日期开始,到特定日期结束,并带有当前日期标记。我使用javascript loader.js绘制图表,但因为我需要在ng-repeat中绘制多个图表。 我的代码如下所示:
$scope.items = [{"title1":"start_day: 01-01-2017", "end_day:15-02-2018"},
{"title2":"start_day: 05-10-2017", "end_day:10-01-2019"}];
来自谷歌图表的和javascript代码:
anychart.onDocumentReady(function () {
// create data tree on our data
var treeData = anychart.data.tree(getData());
// create resource gantt chart
var chart = anychart.ganttResource();
// set container id for the chart
chart.container('container');
// set data for the chart
chart.data(treeData);
// set start splitter position settings
chart.splitterPosition(150);
var now = (new Date()).getTime();
var sec = 1000;
var min = 60*sec;
var hour = 60*min;
var day = 24*hour;
// create linemarkers
var tl = chart.getTimeline();
tl.lineMarker(0).value("current");
// get chart data grid link to set column settings
var dataGrid = chart.dataGrid();
// initiate chart drawing
chart.draw();
// zoom chart to specified date
chart.fitAll();
});
function getData() {
var now = (new Date()).getTime();
var sec = 1000;
var min = 60*sec;
var hour = 60*min;
var day = 24*hour;
return [
{
"periods": [
{"id": "1_1", "start": now - 365*day, "end": now + 100*day }]
},
];
}
我想将angularjs范围变量中的日期传递给javascript代码,这将取代现有的开始和结束数据,我还需要转换日期差异。 提前致谢! :)
答案 0 :(得分:1)
我建议使用另一个JS对象来存储angular和js的公共数据。
var DATES = [{"title1":"start_day: 01-01-2017", "end_day:15-02-2018"},
{"title2":"start_day: 05-10-2017", "end_day:10-01-2019"}];
...
//in agular
$scope.items = DATES;
...
//in loader
function getData() {
...
return DATES;
}
您还可以将一个角度$ scope存储到变量中,然后将其用作JS代码的常用变量var ctrl = $scope
,但我建议使用第一个选项。
-
关于日期差异。尝试使用标准的Date类。 例如:
var deltaMS = new Date("02-15-2018") - new Date("01-01-2017");
var deltaDays = delta / 1000 / 60/ 60 / 24;
//410 days