簡體   English   中英

控制器中的AngularJS工廠出現錯誤

[英]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
    })
}
}

您缺少factoryreturn單。 您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM