将角度范围变量传递给javascript

时间:2018-03-12 14:42:52

标签: javascript angularjs charts scope

我有角度范围变量,也用于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代码,这将取代现有的开始和结束数据,我还需要转换日期差异。 提前致谢! :)

1 个答案:

答案 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