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)

何が悪いのか手伝ってくれませんか。またはそれを機能させる方法のいくつかの関連する例?

4

1 に答える 1

1

あなたはそれを次のように使うべきです

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

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

これはfoo、SpecificationCtrlで定義されていないために挿入されているため、上記のよう$scopeに記述するだけで使用できます。foo

また、コードを縮小する場合は、インジェクション配列の構文を検討してください。

これがプランカーです

于 2012-11-05T20:35:32.093 に答える