我试图根据当前数据模型使用Dojo中的不同图形填充重复(ng-repeat)div。
当我的代码运行时,我收到错误“无法读取属性'nodeType'为null”
我相信这是因为dojo试图渲染到一个尚未实际创建的div。它存在于内存中,AngularJS可以使用它,但尚未在dom中创建。
这是我正在使用的代码。
如何确保元素已创建?
function GetBarChart(elementName)
{
require(["dojox/charting/Chart", "dojox/charting/axis2d/Default", "dojox/charting/plot2d/StackedAreas", "dojox/charting/themes/Wetland" , "dojo/ready"],
function(Chart, Default, StackedAreas, Wetland, ready)
{
ready(function()
{
alert(elementName);
var c = new Chart(elementName);
c.addPlot("default", {type: StackedAreas, tension:3})
.addAxis("x", {fixLower: "major", fixUpper: "major"})
.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", min: 0})
.setTheme(Wetland)
.addSeries("Series A", [1, 2, 0.5, 1.5, 1, 2.8, 0.4])
.addSeries("Series B", [2.6, 1.8, 2, 1, 1.4, 0.7, 2])
.addSeries("Series C", [6.3, 1.8, 3, 0.5, 4.4, 2.7, 2])
.render();
});
});
}
angular.module('myApp')
.directive('myWidget', function()
{
return {
link:function(scope, element, attrs)
{
element.id = scope.widget.id;
GetBarChart(element.id );
console.log(element);
}
};
});
答案 0 :(得分:0)
我还是AngualJS的新手,但解决方案是在指令html中设置div的id而不是在链接函数中设置它
<div id ="{{widget.id}}" ></div>
不是
element.id = scope.widget.id;
这似乎已经消除了订购问题。
但我想知道是否还有另一种更好的方式。
答案 1 :(得分:-1)
元素由jQuery包装,如果你想获取id,你应该这样写:
element[0].id