JS原型:uncaught typeerror undefined不是一个函数

时间:2015-01-25 17:25:42

标签: javascript angularjs

我在尝试在AngularJS中创建工厂时遇到了麻烦。我只是将控制器中的代码移动到工厂并进行一些更改以使其工作。

这是我遇到的错误:

“El objeto no acepta la propiedad oelmétodo'addPoint'”(在IE中) (“对象不支持属性或方法'addPoint'”)

“Uncaught TypeError:undefined不是函数”(在Chrome中)

这是我的代码:

function Shape (shape) {
  this.ToolName   = shape.tool;
  this.LineColor  = shape.lineColor;
  this.LineWidth  = shape.lineWidth;
  this.LineCap    = shape.lineCap;
  this.FillStyle  = shape.fillStyle;
  this.isFilled   = shape.filled;
  this.isStroked  = shape.stroked;
  this.Points     = [];
}

Shape.prototype.addPoint = function(point){
  if(this.ToolName!=='pencil' && this.Points.length>1){
    this.Points.pop();
  }
  this.Points.push(point);
};

当它在Controller内部时,它曾经工作过,但是现在在工厂里面没有。

谢谢。

编辑:

对不起,我没有分享更多代码。您在此处拥有源代码:https://github.com/michaeljota/Arheados/blob/master/app/scripts/controllers/main.js

这是控制器的代码。我想要做的是将$ scope处理的所有内容转换为Factory。有人建议使用服务,但我完全不了解服务的工作原理。

再次感谢你!

1 个答案:

答案 0 :(得分:0)

感谢Evan Knowles,阅读我的代码,我发现错误。

我没有给构造函数赋予形状,只有tmpShape = shape;(女巫是$ scope模型)。所以我只需将其修复为tmpShape = new Shape(shape);,然后再次运行。

我真的很抱歉这样一个noob问题。

谢谢大家!