Angularjs ng重复中的角度范围问题
当我选择一个项目时,动态地将项目添加到列表中时,我有一个ng repeat可以正常工作。它正确地打印值。但是,当我添加一个指令(具有隔离作用域)时,它只打印第一项的详细信息 .html var promise=$interval($scope.getData,3000); } 指令:链接到ng动态图指令(太大,无法在此处发布)Angularjs ng重复中的角度范围问题,angularjs,scope,ng-repeat,Angularjs,Scope,Ng Repeat,当我选择一个项目时,动态地将项目添加到列表中时,我有一个ng repeat可以正常工作。它正确地打印值。但是,当我添加一个指令(具有隔离作用域)时,它只打印第一项的详细信息 .html var promise=$interval($scope.getData,3000); } 指令:链接到ng动态图指令(太大,无法在此处发布) 正如@NewDev所提到的,最有可能的罪魁祸首是声明: <ng-dygraphs style="height:350px;" data="graph.data"
正如@NewDev所提到的,最有可能的罪魁祸首是声明:
<ng-dygraphs style="height:350px;" data="graph.data" options="graph.options" legend="graph.legend" > </ng-dygraphs>
具体地说,您正在使用似乎不存在的数据创建指令,即对象图形。在图形的作用域中没有定义变量
我假设您从中复制了代码,但需要传递到数据、选项和图例中的是在范围中定义的值
这有意义吗?您是从代码中复制的吗?如果是这样,则自定义指令的结束标记与开始标记不同。direc1./dicrec1。不确定这是否是问题所在,但什么是
val
?它与ng repeat完全无关。并显示direct1
的代码,否则我们不知道您的指令是如何输出“name1”
1的。指令为“direc1”-剪切粘贴错误。2. 'val'与ng repeat无关。它是在指令..指令('ngDygraphs',['$window','$sce',函数($window,$sce){return{restrict:'E',scope:{//隔离作用域数据:'=',选项:'=',图例:'=?'}中定义的,模板:'Lot of html code',//Outer div link:function(scope,element,attrs){//Other code her}您没有指出val.data
与其余代码的关系。据我们所知,val.data
中的数据是:[{name:'name1},{name:'name1},{name:'name1'}]
有一个名为$scope.graph的变量,其中包含控制器中定义的数据/选项/图例。我只是没有发布该代码。这是我代码中的第一行。你介意用该数据更新问题吗?它与该行有关,但不是孤立的作用域。孤立的作用域很简单,是一个不依赖的新作用域在父组件的作用域上。感谢您的建议。问题在于指令和“图例”的使用,它也在另一个指令中定义。将代码更改为使用不同的作用域变量而不是图例,现在可以正常工作。太棒了!很高兴您发现了问题!您介意回答它并将其标记为“答案”吗?只要如果有人有类似的问题,他们知道重新访问他们所有的代码!
.controller('ngDygraphCtrl', function ($scope, $http, $timeout, $modal, $interval) {
$scope.graph = {
data: [ "X"
],
options: {
axisLineColor: "#FFFFFF",
drawPoints: true,
pointSize : 1,
strokeWidth : 0.5,
connectSeparatedPoints: true,
axes: {
x: {
valueFormatter: Dygraph.dateString_,
axisLabelFormatter: Dygraph.dateAxisFormatter,
ticker: Dygraph.dateTicker
}
},
colors : ["#ffff00", "#FF3300", "#7920FF", "#ff0000", "#ff00ff"]
} ,
legend: {
}
};
$scope.chartsx = [];
$scope.graphsx = [];
$scope.graphsx = [{name: "name1", size: "col-lg-12"}, {name: "name2", size: "col-lg-6"}]
// Get User state
$scope.addGraph = function() {
var sel = $scope.selected.name;
for ( var ss in $scope.graphsx) {
if ( $scope.graphsx[ss].name == sel ) {
$scope.chartsx.push($scope.graphsx[ss]);
// $scope.charts.push({name: sel, size: "col-sm-6"});
}
}
}
$scope.getData = function() { $http.get('http://localhost:8080/getDygraphData?q=' + queries)
.success(function(data) {
$scope.graph.data = data;
}).error(function (data, status){
console.log("Error status : " + status + " " + data);
}) };
<ng-dygraphs style="height:350px;" data="graph.data" options="graph.options" legend="graph.legend" > </ng-dygraphs>