2016-05-12 11 views
1

私の工場からファクトリ/ファンクションを動作させるのに適しています。私はこれに多くのスレッドを見て、無駄に、さまざまなソリューションを試してみましたので、私は何かが簡単に欠けていると信じるようになります。ここでは、コード(以下にエラーメッセージが)です:私は受け付けておりAngularJS Factory.XXXは機能ではありません

'use strict'; 

    var smacApp = angular.module('smacApp', ['ngRoute']); 

    smacApp.config(function($routeProvider) { 
     $routeProvider 
      .when("/login", { 
       templateUrl: "templates/login.html", 
       controller: "LoginController" 
      }) 
    }); 

    smacApp.factory('AuthenticationService', function() { 

     var users = ["Bob", "Joe"]; 

     return { 
      all: function() { 
       return users; 
      }, 
      first: function() { 
       return users[0]; 
      } 
     }; 
    }); 


    smacApp.controller('LoginController', function($scope,   AuthenticationService) { 
     $scope.users = AuthenticationService.all(); 
     console.log($scope.users); 
    }); 

    smacApp.run.$inject = ['$rootScope', '$routeParams']; 
    smacApp.run(function($rootScope, $routeParams) { 

    }); 

エラーメッセージは次のとおりです。

angular.js:9778TypeError: AuthenticationService.all is not a function 
     at new <anonymous> (http://localhost/smac3/app.js:61:39) 
     at d (http://localhost/smac3/lib/angular/js/angular.min.js:34:265) 
     at Object.instantiate   (http://localhost/smac3/lib/angular/js/angular.min.js:34:394) 
     at http://localhost/smac3/lib/angular/js/angular.min.js:66:112 
     at link (http://localhost/smac3/lib/angular/js/angular-  route.js:913:26) 
     at J (http://localhost/smac3/lib/angular/js/angular.min.js:53:345) 
     at f (http://localhost/smac3/lib/angular/js/angular.min.js:46:399) 
     at http://localhost/smac3/lib/angular/js/angular.min.js:46:67 
     at http://localhost/smac3/lib/angular/js/angular.min.js:47:303 
     at u (http://localhost/smac3/lib/angular/js/angular.min.js:51:28)   <div ng-view="" id="container" class="ng-scope"> 

すべてのヘルプは大歓迎です!

+0

あなたが持つ変数と関数を持っている場合、時にはそれが起こります同じ名前。変数 'all'と関数 'all'のようなものです。まあ、私はあなたのコードのすべてのvaiableを見ていないが、私はちょうど可能性を語った。 AuthenticationService.first()は機能しますか? –

+0

ありがとうSumeet!残念ながら、喜びはありません... TypeError:AuthenticationService.firstは関数ではありません –

+0

私はまったく同じ構文を使用していますので、間違いはありません。lol:pは考えています –

答えて

1

たぶん、あなたの工場の構文が正しいですが、私はいつもより、このようにそれらを書いた:

smacApp.factory('AuthenticationService', function() { 

    var factory = this 
    factory.users = ["Bob", "Joe"]; 
    factory.all = function() { 
     return factory.users; 
    }; 
    factory.first = function() { 
     return factory.users[0] 
    } 

    return factory; 
} 

または

smacApp.factory('AuthenticationService', function() { 

    var factory = this 

    factory = { 
     users: ["Bob", "Joe"], 
     all: function() { return factory.users }, 
     first: function() { return factory.users[0] } 
    } 
    return factory; 
} 
+0

ありがとうマイク!私は両方の方法を使用してみましたが、それぞれに同じエラーが発生しています。スコープを乱す私の注入やルーティングの可能性はありますか?私はAngularのことをかなり新しくしているので、もしそれがばかげていると私を許してください。 –

+0

私はスコープやあなたの注射に関する問題は見ません。スペルと大文字小文字がすべてのインスタンスで同じであることを再度確認します。私はそれが明らかであることを知っているが、私は他の問題ではなかったと思って時間を費やした。また、楽しみのために、工場からサービスに変更してみてください。違いはありません。まだそれを得ることができない場合は、codepenを投稿して見てみましょう。 –

+1

ありがとうございました!トラブルシューティングではコントローラとサービスロジックを私のapp.jsに移動しましたが、xxxConroler.jsファイルとxxxService.jsファイルは、index.htmlファイルに含まれている

関連する問題