2017-02-13 72 views
0

我用下面的代碼使用工廠我得到這個錯誤 -AngularJS工廠

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

這是爲控權

'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); 
} 
}); 

這裏的代碼的代碼爲工廠 -

'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而不是this

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,密碼,密碼}; as var data = {useremail:useremail,password:password};