2012-11-05 7 views
1

이것은 매우 가짜 질문이지만, 나는 그것을 이해할 수 없습니다.

이제
var synergy_module = angular.module('synergy', []) 
    .config(function($provide, $routeProvider) { 
$routeProvider.when('/s/:id', {templateUrl: 'partials/...', controller: SpecPoolCtrl}); 
$routeProvider.when('/s', {templateUrl: 'partials/...', controller: SpecPoolCtrl}); 
$provide.factory('foo', function(){return 1;});  
}); 

SpecPoolCtrl에서 : :이 코드를 실행하면

function SpecificationCtrl($scope, foo,$http, $location, $routeParams) { 
    window.console.log($scope.foo()); 
    ... 
} 

것은, 내가

TypeError: Object #<Object> has no method 'foo' 
at new SpecificationCtrl (app/js/controllers.js:373:31) 
at invoke (app/lib/angular/angular.js:2795:28) 
at Object.instantiate (app/lib/angular/angular.js:2805:23) 
at $get (app/lib/angular/angular.js:4621:24) 

당신이 무엇을 도와 줄 수는군요 I는 다음과 같이 구성, 몇 가지 간단한 모듈이 잘못된? 아니면 몇 가지 관련 예제를 어떻게 작동 시키는가? 위에서 언급 한 바와 같이 단지 foo를 작성하여 사용할 수 있도록

답변

1

당신은 foo이 SpecificationCtrl $scope에 정의되지 않은 때문이다

$provide.factory('foo', function(){ 
    return 1; 
}); 

function SpecificationCtrl($scope, foo,$http, $location, $routeParams) { 
    console.log(foo); 
    ... 
} 

처럼 사용한다, 그것은 주입되는 것.

또한 코드를 축소하려면 주입 배열 구문을 고려하십시오. 여기

plunker

+0

입니다 : D가 나는 등의 간단한 실수를 믿을 수 없다. 감사합니다 – ladar

+0

그것은 일어납니다 :) 당신은 환영합니다! – maxisam