0

現在のデータ モデルに基づいて、Dojo からのさまざまなグラフを繰り返し (ng-repeat) div に入力しようとしています。

コードを実行すると、「null のプロパティ 'nodeType' を読み取れません」というエラーが表示されます。

これは、実際にはまだ作成されていない div に dojo がレンダリングしようとしていることが原因だと思います。メモリ内に存在し、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);
  }
};
});
4

2 に答える 2

0

私はまだAngualJSを初めて使用しますが、解決策はリンク関数で設定するのではなく、ディレクティブhtmlでdivのIDを設定することでした

<div id ="{{widget.id}}" ></div>

いいえ

element.id = scope.widget.id;

これにより、注文の問題が解消されたようです。

しかし、他にもっと良い方法があるのではないかと思います。

于 2013-06-11T17:54:28.010 に答える
-1

要素は jQuery によってラップされます。ID を取得する場合は、次のように記述します。

element[0].id
于 2013-11-21T03:41:14.837 に答える