angularjs工厂未定义

马克·拉斯穆森

我有以下内容userModule

(function () {
var userModule = angular.module('user', [
    'Auth'
]);

userModule.controller('UserController', ['$http', '$scope', function (UserFactory) {
    var uc = this;
    uc.user ={}; //set when login

    uc.login = login;

    function login(username, password)
    {
        UserFactory.login(username,password).then(function success(reponse){
            uc.user = reponse.data
        })
    }
}]);

userModule.factory('UserFactory', function UserFactory ($http)
{
    'use strict';
    return{
        login: login
    };
    function login(username, password)
    {
        return $http.post(API_URL + '/login',
            {
                username: username,
                password: password
            });
    }

});

})();

现在,当我调用登录功能时,我收到一条错误消息,告诉我 UserFactory is undefined

谁能告诉我香港专业教育学院做错了什么?

我的表格

        <form class="panel-body wrapper-lg" ng-controller="UserController as userCtrl"
          ng-submit="userCtrl.login(userCtrl.user.username, userCtrl.user.password)" >
        <div class="form-group">
            <label class="control-label">Brugernavn</label>
            <input type="email" class="form-control input-lg" id="txt_username" name="username"
                   placeholder="Brugernavn" ng-model="userCtrl.user.username">
        </div>
        <div class="form-group">
            <label class="control-label">Kodeord</label>
            <input type="password" name="password" placeholder="Kodeord" class="form-control input-lg"
                   ng-required="" ng-model="userCtrl.user.password">
        </div>
        <input type="submit" class="btn btn-lb-primary" value="Log på">

    </form>
rdiz

当使用数组作为第二个参数定义控制器时,您实际上只是在告诉角度依赖性注入引擎在最后一个参数附带的函数/闭包中注入什么。因此,您必须明确告诉它注入UserFactory。在您的情况下,控制器闭包中的UserFactory将是$http服务的实例

userModule.controller('UserController', ['$http', '$scope', 'UserFactory', function ($http, $scope, UserFactory) {
    var uc = this;
    uc.user ={}; //set when login

    uc.login = login;

    function login(username, password)
    {
        UserFactory.login(username,password).then(function success(reponse){
            uc.user = reponse.data
        })
    }
}]);

尽管我不确定是否有任何区别,但是我喜欢按时间顺序声明我的模块,服务等,即先创建您的模块userModule,然后创建您UserFactory的控制器,最后是您的控制器。

为了实现优化,请尝试在工厂中使用与控制器相同的语法:

userModule.factory('UserFactory', ['$http', function UserFactory ($http)
{
    //....
}]);

使用数组语法的原因是,当您最小化js时,您的局部变量将具有某些服务无法解析的名称,因为angulars依赖注入器无法读取变量名称,最终看起来像这样:

userModule.factory('UserFactory', ['$http', function UserFactory (t)
{
    //....
}]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在angularjs中未定义工厂

来自分类Dev

为什么在angularjs中出现“工厂未定义”错误?

来自分类Dev

angularjs TypeError:未定义不是函数工厂

来自分类Dev

angularjs ui路由器解析工厂未定义

来自分类Dev

离子工厂未定义

来自分类Dev

在另一个工厂中使用工厂是未定义的 - AngularJS

来自分类Dev

角工厂保持返回未定义

来自分类Dev

Angular工厂中未定义的“ this”

来自分类Dev

工厂服务始终未定义

来自分类Dev

AngularJS:控制器中未定义工厂函数

来自分类Dev

在angularJS中使用工厂方法时,未定义不是函数错误

来自分类Dev

AngularJS-工厂-TypeError:无法读取未定义的属性'getSpec'

来自分类Dev

AngularJS:注入控制器后,工厂始终是未定义的

来自分类Dev

AngularJS:控制器中未定义工厂函数

来自分类Dev

FileTransfer未定义-AngularJS

来自分类Dev

AngularJS $ httpProvider未定义

来自分类Dev

AngularJS $ routeParams未定义

来自分类Dev

AngularJS:'未定义$ scope'

来自分类Dev

AngularJS:错误未定义

来自分类Dev

angularjs 解析未定义

来自分类Dev

angularjs $ localStorage未定义,但已定义

来自分类Dev

为什么该工厂返回未定义?

来自分类Dev

从工厂返回$ http Promise时未定义

来自分类Dev

处理路线时出错,工厂未定义

来自分类Dev

角度控制器/工厂返回未定义的对象

来自分类Dev

NameError:未定义工厂名称-Kivy

来自分类Dev

无法访问工厂功能(未定义不是功能)

来自分类Dev

工厂函数给出“错误:未定义

来自分类Dev

控制器从工厂收到未定义的调用函数