Angular js:TypeError:无法读取属性' elem'未定义的

时间:2018-03-28 12:30:14

标签: angularjs two.js

我在图像上绘制了一个多边形,我想用鼠标点击它移动它,我有这个错误,我不能做它们请你有一个想法。对于这个问题,我使用了librairie Two.js而我不能那样做

 $scope.DrawPolygon = function (id, json)
 {

    var elem = document.getElementById('ImgCamera' + id);
    if (elem != null)
    {
        elem.innerHTML = "";
        var two = new Two({
            type: Two.Types.canvas,
            fullscreen: false,
            width: 640,
            height: 480,
        }).appendTo(elem);

        var canvas = two.renderer.domElement;
        var img = $scope.spotCAMImageLoaded[_GetCameraNumberFromPolygonNumber(id)];

        var texture = new Two.Texture(img, function () { });
        var rect = two.makeRectangle(canvas.width / 2, canvas.height / 2, canvas.width, canvas.height);
        rect.fill = texture;
        rect.noStroke();

        var jsonPoly = null;
        var camera = json.Camera2;
        if (_GetCameraNumberFromPolygonNumber(id) == 0)
            camera = json.Camera1;

        if (camera != null)
        {
            jsonPoly = camera[_GetPolygonNumberFromCameraNumber(id)];
            var polygon = two.makePath([new Two.Anchor(jsonPoly.P1.x, jsonPoly.P1.y)
                                         , new Two.Anchor(jsonPoly.P2.x, jsonPoly.P2.y)
                                         , new Two.Anchor(jsonPoly.P3.x, jsonPoly.P3.y)
                                         , new Two.Anchor(jsonPoly.P4.x, jsonPoly.P4.y)])


            polygon.fill = "#008bbe";
            polygon.opacity = 0.5;
            polygon.stroke = "#00435c";
            polygon.linewidth = 10;

        polygon.renderer.elem.style.cursor = 'pointer';
        two.update(); 

    }
}

2 个答案:

答案 0 :(得分:0)

不熟悉Two.js并且您没有发布任何DOM结构,但此功能中有很多内容。考虑将其分解为更小的功能。同时使用尽可能多的angularjs DSL,例如:

  • 使用angular.element(<selector)代替document.<selectorMethod>
  • 使用elem if(elem)的真实检查,0 nullundefined的值将被防范,camera支票

答案 1 :(得分:0)

不幸的是,undefinednull在JavaScript中是不同的值。 在第一条语句中,document.getElementById('ImgCamera' + id)返回undefined。 尝试将第一个if语句更改为此:

if (elem != undefined && != null) {