首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS和dojox.charting -null的'nodeType‘“

AngularJS和dojox.charting -null的'nodeType‘“
EN

Stack Overflow用户
提问于 2013-06-11 04:45:13
回答 2查看 970关注 0票数 0

我正在尝试根据当前的数据模型,用Dojo中的不同图形填充一个重复(ng-repeat) div。

当我的代码运行时,我得到错误"Cannot read property 'nodeType‘of null“

我相信这是因为dojo试图渲染到一个实际上还没有创建的div中。它存在于内存中,AngularJS可以使用它,但尚未在dom中创建。

这是我正在使用的代码。

如何确保元素已创建?

代码语言:javascript
复制
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);
  }
};
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 01:54:28

我还是个AngualJS新手,但是一个解决方案是在html指令中设置div的id,而不是在链接函数中设置它。

代码语言:javascript
复制
<div id ="{{widget.id}}" ></div>

代码语言:javascript
复制
element.id = scope.widget.id;

这似乎消除了排序问题。

但我想知道是否还有其他更好的方法。

票数 0
EN

Stack Overflow用户

发布于 2013-11-21 11:41:15

元素是由jQuery包装的,如果你想获得id,你应该这样写:

代码语言:javascript
复制
element[0].id
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17032502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档