2015-01-13 5 views
0

나는 이벤트를 호출 할 때 API를 통해 정보를로드하는 데 사용하는 Announcement 클래스를 다루고 있습니다. 그들은 자산 파이프 라인으로 연결된다 그러나 코드의잡히지 않은 TypeError : 정의되지 않은 함수 (자산 파이프 라인)

$(window).ready(function() { 
    Dynatable.selector.bind('dynatable:afterUpdate', function (rows) { 
     $('.dy-button').on('click', function (event) { 
      var record = $(this).attr('record'); 
      var Announcement = new Announcement(record); 
      Announcement.load(); 
     }); 
    }); 
}); 

두 개의 서로 다른 파일에 있습니다

Announcement = function Announcement (id) { 

    var id = id;  
    var vars = {}; 

    this.load = function load() { 
     $.ajax({ 
      url: '/api/announcements/' + id, 
      dateType: 'json', 
      async: false, 
      success: function (data) { 
       vars = data.announcement; 
      } 
     });  
    } 

    this.getVars = function getVars() { 
     return vars; 
    } 
} 

내 이벤트입니다. 발표 클래스가 먼저로드됩니다.

내가 도달하면 :

var Announcement = new Announcement(record); 

그것은 말한다 :

Uncaught TypeError: undefined is not a function 

내가 지난 일을 위해 그것을 해결하기 위해 노력하고있다.

+0

'$ (window) .ready'를'$ (document) .ready'로 변경하면 어떻게 될까요? 궁금한 점이 있다면 그것들은 서로 다른 사건입니다 ... – War10ck

+0

@ War10ck 똑같은 것입니다. – GiamPy

+1

흥미 롭습니다. 함수 내에서 변수 이름을 변경하는 것을 고려해야합니다. 새로 생성 된 객체로 함수 내의 전역 범위를 효과적으로 덮어 씁니다. 그것이 당신의 실제 의도입니까? – War10ck

답변

0

이어야한다. 코드가 다음과 같이 작성되었습니다.

$('.dy-button').on('click', function (event) { 
    var record; 
    var Announcement; 

    record = $(this).attr('record'); 
    Announcement = new Announcement(record); 
    Announcement.load(); 
}); 

로컬 변수 알림이 공개 변수보다 우선 적용됩니다.

자세한 내용은 good read 일 수 있습니다.

0

알림 이름을 기능에서 제거하십시오.

Announcement = function Announcement (id) { 

Announcement = function (id) { 

또는 우측 기능 전에 var Announcement =를 제거합니다.

+0

문제가 해결되지 않습니다. 귀하의 제안은 그 기능을 익명으로 만듭니다. 내 것은 대신 명명 된 함수를 만듭니다. [여기를 참조하십시오.] (https://github.com/airbnb/javascript#functions) – GiamPy

+0

내 편집보기, 마지막 라인 – Tyr

+0

마지막 편집이 작동하지 않습니다. – GiamPy

0

var id = id이 있습니다.이 값은 this.id = id이어야합니다.


Announcement = function Announcement(id){...이되고 싶지 않습니다.
는 이유는 변수 게양입니다
function Announcment(id) {...

+0

'this.id'는 속성을 public으로 만듭니다. 이것은 내가 원하지 않는 것입니다. – GiamPy

관련 문제