2014-07-05 1 views
0

내 서비스를 통해 일반 json 데이터를 가져온 다음 생성자 및 프로토 타입 메서드를 통해 일부 동작을 연결합니다. 이 개체가 서비스에서 컨트롤러로 반환되면 개발자 도구를 통해 정확한 '클래스'이름을 볼 수 있지만 사용 가능한 메서드는 없습니다. anglejs 앱 외부에서 클래스와 프로토 타입을 테스트 할 때 예상대로 작동합니다. 아래 내 서비스 :컨트롤러의 프로토 타입 메서드가 누락되었습니다.

app.factory('characterService', function($http) { 
    var _chars = []; 
    return { 
     getCharacters: function() { 
      return $http.get('app/resources/charsheets.js').then(function(d) { 
       _chars = []; 
       var data = d.data.characters; 
       for (var i = 0; i < data.length; i++) { 
        _chars.push(new Character(data[i])); 
       } 
       return _chars; 
      }); 
     } 
    }; 
    Character.prototype.getStatBonus = function(statAbbr) { 
     var bonus = 0; 
     if (statAbbr && statAbbr != '') { 
      var baseStats = this["baseStats"]; 
      for (var i = 0; i < baseStats.length; i++) { 
       if (baseStats[i].abv == statAbbr) { 
        //More stuff normally happens, but for the sake of brevity 
        //it has been reduced to a simple assignment 
        bonus = baseStats[i].totalBonus; 
        break; 
       } 
      } 
     } 
     return bonus; 
    }; 

}); 

function Character(raw) { 
    //Stuff here 
    } 

내 아주 기본적인 컨트롤러 :

app.controller('characterController',function($scope,characterService) 
    { 
     $scope.model = {}; 

     characterService.getCharacters().then(function(data){ 
      $scope.model.characters = data; 
      $scope.model.currentCharacter = data[0]; 
     }); 

    }); 

일부 샘플 마크 업 :

<div> 

    {{model.currentCharacter.getStatBonus('Ag')}} 

</div> 

내가 점점 오전 오류가 getStatBonus에도 불구하고, 정의되지 않은 점이다 객체는 Character 유형 (개발자 도구를 통해 확인 됨)입니다.

나는 가능한 것을 시도하고 있습니까? 감사합니다

+1

당신이 당신의 코드를 게시하고 그것을 할 수있는 장소에 도착 일을 각 방법입니다 있는지 확실하지 않습니다. –

+0

@ PM77-1 자, 가야겠다. – link64

+0

팩토리 함수에서 '반환'할 때 '문자'가 '함수 호이스트'로 인해 정의되지만 문자 프로토 타입을 수정하는 코드는 실행되기 전에 실행되지 않습니다. – stooboo

답변

0

발견 내 문제는 ... 나는 서비스의 본문에 생성자와 프로토 타입 메소드를 선언했다.

나는 그것의 외부를 선언하고 그것을 작동하지만 그