[英]AngularJS factory in controller get 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
})
}
}
您缺少factory
的return
單。 您的data
變量上也有一個錯字,帶有多余的逗號。
您應該這樣做:
function dataService($http) {
var data = {
UserLogin: UserLogin
}
return data;
function UserLogin() {
//whatever
}
}
似乎在創建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);
請更改此行var data = {useremail:useremail,password,password}; as var data = {useremail:useremail,password:password};
在控制器中使用$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);
}
}]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.