2015-01-25 5 views
-1

AngularJS에서 팩토리를 만드는 데 문제가 있습니다. 컨트롤러의 코드를 공장으로 옮기고 작동하도록 몇 가지 변경을합니다. JS 프로토 타입 : uncaught typeerror undefined가 함수가 아닙니다.

나는 데 오류입니다 :

"엘 objeto 더 acepta 라 propiedad 오 엘 método 'addPoint'"(IE)에 ("속성 또는 메서드 'addPoint'를 지원하지 않는 객체"없다)

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); 
}; 

이 때이 작동하는 데 사용 :

이 내 코드) 크롬 ("catch되지 않는 형식 오류 정의되지 않은 함수 아니다" 컨트롤러 내부에 있지만 지금은 공장 내부에서는 그렇지 않습니다.

감사합니다.

편집 :

죄송합니다. 더 많은 코드를 공유하지 않았습니다. 여기에 소스 코드가 있습니다 : https://github.com/michaeljota/Arheados/blob/master/app/scripts/controllers/main.js

이것은 컨트롤러의 코드입니다. 내가하고 싶은 것은 $ scope로 처리 할 수없는 모든 것을 Factory로 변환하는 것이다. 어떤 이들은 서비스를 제안하지만, 나는 서비스가 어떻게 작동하는지 잘 이해하지 못합니다.

다시 한 번 감사드립니다!

+1

공장 출하시 읽어야 할 수도 있습니다. factory가 제공된 클래스를 새로 작성하지 않으면 팩토리를 사용할 때 인스턴스를 작성해야합니다. 서비스 사용은 어떻습니까? 더 많은 코드를 공유하십시오. – PSL

+1

이 코드가 전부입니까? 이 오류가 표시되는 것처럼 보이지 않습니다. –

+0

GitHub 코드를 컨트롤러에 추가합니다. 둘 다 고마워. –

답변

0

Evan Knowles 덕분에 코드를 읽는 중 오류가 발생했습니다.

나는 셰이프를 생성자에 제공하지 않고 단지 tmpShape = shape; (마녀는 $ scope 모델 임)입니다. 그래서 나는 이것을 tmpShape = new Shape(shape);에 고쳐서 다시 작동합니다.

그런 멍청한 질문에 정말 유감입니다.

감사합니다.

관련 문제