Angularjs 将对象数组传递到角度指令
我的角度控制器中有一组对象,例如Angularjs 将对象数组传递到角度指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我的角度控制器中有一组对象,例如 [{ label: 'label1', data: [{ type: TimelineChart.TYPE.POINT, at: new Date([2015, 1, 1]) }, { type: TimelineChart.TYPE.POINT, at: new Date([2015, 2, 1]) }]
[{
label: 'label1',
data: [{
type: TimelineChart.TYPE.POINT,
at: new Date([2015, 1, 1])
}, {
type: TimelineChart.TYPE.POINT,
at: new Date([2015, 2, 1])
}]
}, {
label: 'label2',
data: [{
type: TimelineChart.TYPE.POINT,
at: new Date([2015, 1, 11])
}, {
type: TimelineChart.TYPE.POINT,
at: new Date([2015, 1, 15])
}]
}];
每个对象都有一个日期字段。如何将此对象数组传递到指令中
我试着通过引用传递:
<div id= "chart" my-directive my-data="data"></div>
$scope: {
myData: '='
},
link: function($scope, $element, $attrs) {
function init() {
var data = $scope.myData;
var timeline = new TimelineChart($element[0], data);
}
$attrs.$observe("myData", init);
}
然而,它没有起作用。我没有定义
作为属性传入,即my data={{data}并使用JSON.parse$attrs.myData由于日期字段而无法工作。我认为问题在于数组对象在$scope中丢失。要确认,请使用console.log$scope.myData 并在浏览器控制台中查看它返回的内容,如果未定义,则只需编写console.log$scope;然后运行应用程序。转到浏览器控制台并展开$parent,直到找到myData对象。计算父作用域的数目 如果您在第三个父项下找到它,则使用 $scope.$parent.$parent.$parent.myData而不是$scope.myData
这将起作用:我认为问题在于数组对象在$scope中丢失。要确认,请使用console.log$scope.myData 并在浏览器控制台中查看它返回的内容,如果未定义,则只需编写console.log$scope;然后运行应用程序。转到浏览器控制台并展开$parent,直到找到myData对象。计算父作用域的数目 如果您在第三个父项下找到它,则使用 $scope.$parent.$parent.$parent.myData而不是$scope.myData
这将起作用:将数据传递给指令非常简单。我认为你缺少的是范围。您正在使用$scope而不是scope。指令定义对象接受范围而不是$scope。所以你需要做什么
scope: { //make it scope
myData: '='
},
link: function($scope, $element, $attrs) {
function init() {
var data = $scope.myData;
var timeline = new TimelineChart($element[0], data);
}
$attrs.$observe("myData", init);
}
以下是将数据传递到指令非常简单。我认为你缺少的是范围。您正在使用$scope而不是scope。指令定义对象接受范围而不是$scope。所以你需要做什么
scope: { //make it scope
myData: '='
},
link: function($scope, $element, $attrs) {
function init() {
var data = $scope.myData;
var timeline = new TimelineChart($element[0], data);
}
$attrs.$observe("myData", init);
}
下面是使用$observe甚至更好的$watch参数来确保定义新值的方法。或通过控制器或服务的承诺我可以确认控制器中定义良好,但由于某些原因,它在我的指令中显示为未定义@charlietfl另外,我已经在使用$observe.Yes,但是$observe可以使用第一个值激发,如果您使用$http创建数据,则不会定义第一个值…使用参数。或使用路由解析,并确保在控制器和指令启动之前,一切都准备就绪。我现在甚至没有调用$http来检索数据。。。我只是在controller中定义它@charlietflUse$observe或更好的$watch参数,以确保定义了新值。或通过控制器或服务的承诺我可以确认控制器中定义良好,但由于某些原因,它在我的指令中显示为未定义@charlietfl另外,我已经在使用$observe.Yes,但是$observe可以使用第一个值激发,如果您使用$http创建数据,则不会定义第一个值…使用参数。或使用路由解析,并确保在控制器和指令启动之前,一切都准备就绪。我现在甚至没有调用$http来检索数据。。。我只是在controller中定义它@查理:你面临的挑战是什么。我已经创造了小提琴,我能看到,我能得到数据,我不能看到你的小提琴;它没有运行,所以我不能说它是否工作。但我知道,即使我在代码中切换到使用Scope,它也不起作用。我可以在控制台中看到数据。请检查一下控制台。您面临的挑战是什么。我已经创造了小提琴,我能看到,我能得到数据,我不能看到你的小提琴;它没有运行,所以我不能说它是否工作。但我知道,即使我在代码中切换到使用Scope,它也不起作用。我可以在控制台中看到数据。请检查一下控制台。