javascript/angularjs将字符串与循环编号连接起来
为了得到结果,我想用变量数字做一个循环javascript/angularjs将字符串与循环编号连接起来,javascript,angularjs,Javascript,Angularjs,为了得到结果,我想用变量数字做一个循环 var number = 0; var date = "2016-05-10" $scope.test = date; 变量$scope.test不是数组,而是(变量i=0;i
var number = 0;
var date = "2016-05-10"
$scope.test = date;
变量$scope.test
不是数组,而是(变量i=0;i<$scope.number;++i)的字符串{
$scope.test1 = 2016-05-10
$scope.test2 = 2016-05-10
$scope.test3 = 2016-05-10
$scope['test'+i]=日期;
}
像这样吗?我认为您低估或不了解数组和
ng repeat
的用途。从您的评论中,听起来您希望能够遍历多组数据集,每组生成一个图表,我将使用您先前的评论作为解决我认为是您的问题的许可,而不是您的字面问题
看看我对您自己的JSFIDLE示例所做的简单修改。我所做的只是将包含数据集的对象(我复制并调整了您拥有的数据集)放入一个数组中,然后对它们进行迭代,将数据传递到带有ng repeat
的图表(您可能需要在视图窗格中向下滚动以查看第二个图表)
在JS控制器中:
for (var i = 0; i < $scope.number; ++i) {
$scope['test' + i] = date;
}
在HTML视图中:
// Chart.js Data
$scope.chartDataArray = [{
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'My First dataset',
// ... All the stuff for coloration
data: [65, 59, 80, 81, 56, 55, 40]
},
{
label: 'My Second dataset',
// ... All the stuff for coloration
data: [28, 48, 40, 19, 86, 27, 90]
}
]
},{
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'My First dataset',
// ... All the stuff for coloration
data: [0, 1, 2, 3, 4, 5, 6]
},
{
label: 'My Second dataset',
// ... All the stuff for coloration
data: [12, 10, 8, 6, 4, 2, 0]
}
]
}];
这基本上只是一个foreach循环。$scope.chartDataArray=[];
<canvas ng-repeat="data in chartDataArray" tc-chartjs-line chart-options="options" chart-data="data" auto-legend ng-click="chartClick($event)" chart="chart"></canvas>
对于(var i=0;i<4;i++)//我将“4”替换为表示所需图表数量的变量,我正在使用RESTAPI
{
$scope.chartDataArray[i]={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”],//我用我的数据替换它
数据集:[{
标签:“我的第一个数据集”,
fillColor:'rgba(220220,0.2)',
strokeColor:“rgba(2201)”,
pointColor:'rgba(220220,1)',
pointStrokeColor:“#fff”,
pointHighlightFill:“#fff”,
pointHighlightStroke:'rgba(2201,1)',
数据:[65,59,80,81,56,55,40]//我的数据
}, {
标签:“我的第二个数据集”,
fillColor:“rgba(151187205,0.2)”,
strokeColor:“rgba(151187205,1)”,
点颜色:“rgba(151187205,1)”,
pointStrokeColor:“#fff”,
pointHighlightFill:“#fff”,
pointHighlightStroke:“rgba(151187205,1)”,
数据:[28,48,40,19,86,27,90]//我的数据
}]
};
//范围。选项。。。。
}//关闭
在我的html中
$scope.chartDataArray = [];
for (var i = 0; i < 4; i++)// I replace "4" by variable which represent number of charts I need, I'm consuming Rest Api
{
$scope.chartDataArray[i] = {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],// I replace it by my datas
datasets: [{
label: 'My First dataset',
fillColor: 'rgba(220,220,220,0.2)',
strokeColor: 'rgba(220,220,220,1)',
pointColor: 'rgba(220,220,220,1)',
pointStrokeColor: '#fff',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(220,220,220,1)',
data: [65, 59, 80, 81, 56, 55, 40] // my datas
}, {
label: 'My Second dataset',
fillColor: 'rgba(151,187,205,0.2)',
strokeColor: 'rgba(151,187,205,1)',
pointColor: 'rgba(151,187,205,1)',
pointStrokeColor: '#fff',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(151,187,205,1)',
data: [28, 48, 40, 19, 86, 27, 90] // my datas
}]
};
//scope.options ....
} //close the for
为什么不为$scope.test?
设置一个数组呢。这真的是它的核心,有一系列相关的价值观。我认为你必须对你的问题进行更多的解释。@Harris Weinstein我正试图在angular中嵌入带有指令的多重图表。我可以显示一个这样的图表$scope.data={标签:['一月','二月','三月','四月','五月','六月','七月'](简短的例子)…..在我的html页面中,我得到它:chart data=“data”。我想做一个循环以获得类似$scope.data1=…的内容,并使用ng REPLAT指令“chart data=data1…”在html中显示它(请注意,“1”将被增量变量替换。如果我这样做:chart data=data[1],它不起作用。这就是为什么我不能使用数组它是一个JSFIDLE链接来更好地理解我所说的内容。事实上,我真的想用一个指令嵌入多个图表,然后我将用ng repeat指令创建元素来显示图表谢谢,但我试过了,它不起作用。我想当你用角度绑定范围时,您需要$scope.“'nice:)谢谢。关于元素的另一个问题,请执行以下操作”"如何以自己的方式显示每个图表?在一个面板中单独显示每个图表会很有趣,例如ng repeat
指令这里只依赖于$scope
,因此它基本上对任何要重复的HTML元素都是有效的,并且每个迭代中的数据
变量都是有效的重复元素中的任意位置。您只需将ng repeat
剪切并粘贴到一个div上,然后放置画布(记住从中删除ng repeat
)在div中,它会按您的要求执行。好的,它工作了!非常感谢。更进一步,如果您不知道chartDataArray中ChartData的数量,并且必须创建一个循环来处理数据,您将如何创建循环来在chartDataArray中动态插入ChartData?我知道了,谢谢。我所做的是:使用variable i=0,我在绘制每个chartDataArray后递增[i]我不完全确定我是否遵循了你的意思。据我所知,你不应该直接跟踪任何东西。你能用一个显示你所做的事情的JSFIDLE版本来响应吗?
<div ng-repeat="data in chartDataArray">
<canvas tc-chartjs-line chart-options="options" chart-data="data" auto- legend ng-click="chartClick($event)" chart="chart"></canvas>
</div>