2013-09-25 3 views
3

응용 프로그램의 프로토 타입을 만들고 싶습니다. 데이터를 검색하기 위해 나머지 서비스를 호출하고 싶지 않습니다. 이를 위해 서비스 (캐시)에 내 개체를 만들고 이러한 서비스를 사용하여 개체를 진부하게 표시하려고합니다.CRUD 서비스에서 cacheFactory 사용

서비스에서 CacheFactory를 사용하고 각 crud 연산에 대해 캐시의 객체 배열을 직접 조작합니다. 이제

나는 다음과 같은 코드가 있습니다

캐시 서비스 :

services.factory('TeacherCache', ['$cacheFactory', function ($cacheFactory) { 
var cache = $cacheFactory('TeacherCache'); 
cache.put('teachers', [ 
    { 
     id: 1, 
     clientId: 100, 
     username: '[email protected]', 
     password: 'mdp', 
     lastName: 'THETEACHER2', 
     firstName: 'DE', 
     secondFirstName: '', 
     address: '9, ADRESS', 
     city: 'Paris', 
     country: 'USA', 
     zipCode: '7ffd5445020', 
     email: '[email protected]', 
     homePhone: '006546546546', 
     cellPhone: '54415151661', 
     birthDate: '31/12/1958', 
     enabled: true, 
     roles: [ 
      {id: 1, name: 'Teacher'} 
     ], 
     //--------------------- 
     substitute: false, 
     schoolClasses: [], 
     subjects: [], 
     options: [], 
     employedDate: '28/08/2013' 
    } 
]); 

return cache; 
}]); 

그리고 내 객체 서비스 :

services.factory('TeacherService', 'TeacherCache', function (TeacherCache) { 
return { 
    errorMessage: '', 
    create: [...], 

    get: function (id) { 
     [...] 
    }, 

    //Get a list of db objects with query 
    query: function() { 
     return TeacherCache.get('teachers'); 
    }, 

    delete: [...] 
}; 
}) 
; 

하지만 난 내 컨트롤러 및 전화 쿼리에 TeacherService를 주입 할 때 :

var teachers = TeacherService.query(); 

다음 오류가 있습니다.

Error: Argument 'fn' is not a function, got string 

어떻게 해결할 수 있습니까? 고맙습니다 !

답변

2

'TeacherService'의 두 번째 매개 변수는 배열이어야합니다.

controllers.factory('TeacherService', ['TeacherCache', function(TeacherCache){ 
    return {...} 
}]); 

호프가 도움이 되었으면 여기에 plunker이 작동합니다.