2017-02-13 5 views
0

私は工場を使用するには、次のコードを使用して取得し、私はこれがAngularJS工場はエラー

Error: [$injector:undef] http://errors.angularjs.org/1.6.1/ $injector/undef?p0=ShowService

これはcontroller-

'use strict'; 

app.controller("LoginController", function (ShowService) { 

var model = this; 

//function call when user submit the login form 
model.login = function (useremail, password) { 
    var data = {useremail:useremail, password,password}; 
    var url = "/php/user-login.php"; 
    ShowService.UserLogin(url,data); 
} 
}); 

ためのコードであり、ここでのコードでのエラー - 取得します代わりthisのコントローラにおける工場出荷

'use strict'; 

app.factory('ShowService', dataService); 

function dataService($http) { 
var data = { 
    "UserLogin": UserLogin, 
} 

function UserLogin(postUrl, data) { 
    return $http({ 
     method: "POST", 
     url: post_url, 
     data: data 
    }) 
} 
} 
+0

あなたはjsファイルを参考にしましたか? – Sajeetharan

+0

こんにちは、ファイルを小さくしましたか? – PortePoisse

答えて

1

あなたfactoryreturn文を逃しています。 data varに余分なカンマが付いているタイプミスもあります。

あなたはこのようにそれを実行する必要があります。

function dataService($http) { 
    var data = { 
    UserLogin: UserLogin 
    } 
    return data; 

    function UserLogin() { 
    //whatever 
    } 
} 
+0

それは今作動する!ありがとう! –

-2

使用$scopeため。

app.controller("LoginController", ['$scope', 'ShowService', function ($scope, ShowService) { 


//function call when user submit the login form 
$scope.login = function (useremail, password) { 
    var data = {useremail:useremail, password,password}; 
    var url = "/php/user-login.php"; 
    ShowService.UserLogin(url,data); 
} 
}]); 
0

あなたがShowServiceを作成するときに、あなたのdata変数を返すのを忘れているようです。

コントローラとサービスの両方に必要な依存関係を注入するように注意してください。スタークの答えはそれに役立つかもしれません。

'use strict'; 

function dataService($http) { 
    function UserLogin(postUrl, data) { 
     return $http({ 
      method: "POST", 
      url: post_url, 
      data: data 
     }); 
    } 

    var data = { "UserLogin": UserLogin}; 
    return data; 
} 

dataService.$inject = ["$http"]; 

app.factory('ShowService', dataService); 
0

VARデータは=この行を変更してください{USEREMAIL:USEREMAIL、パスワード、パスワード}。としてvar data = {useremail:useremail、password:password};

関連する問題