2017-02-13 132 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};