如何将对象从控制器传递到服务

时间:2015-07-02 01:00:17

标签: angularjs

我在我的控制器中有这个在$ scope.formData中检索和对象。

angular.module('starter.controllers', [])

.controller('loginController', function($scope, Authentication){
$scope.formData = {};

$scope.processForm = function(){
    Authentication.login($scope.formData);
    //$http({
    //    method  : 'GET',
    //    url     : 'http://localhost:8888/employees/login',
    //    params: $scope.formData
    //})
    //    .success(function(respond){
    //        $scope.state.go('main');
    //    })
}

})

在服务js中我有一个名为login的方法,它假设要检索从控制器发送的数据,但到目前为止,当我执行console.log(formData)时,我得到一个值为null。

angular.module('starter.services', [])

.factory('Authentication', function($http){

    this.login = function(formData){
    console.log(formData);
    return $http({
            method  : 'GET',
            url     : 'http://localhost:8888/employees/login',
            params: formData
        })
}

    return null;
})

这是我的HTML

<ion-view view-title="login">
<ion-content class="padding has-header">
    <div class="row">
        <div class="col col-50 col-offset-25">
            <div class="card">
                <div class="item item-text-wrap">
                    <form ng-submit="processForm()">
                        <div class="list">
                            <label class="item item-input">
                                <input type="text" placeholder="First Name" ng-model="formData.AccessKey" required="true">
                            </label>
                            <label class="item item-input">
                                <input type="text" placeholder="Last Name" ng-model="formData.Password" required="true">
                            </label>
                        </div>
                        <button class="button button-full button-positive">
                            Sign me in
                        </button>
                    </form>
                </div>
            </div>
        </div>
    </div>
</ion-content>

我收到此控制台错误无法读取null的“login”属性

我的app.js

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])

2 个答案:

答案 0 :(得分:0)

如果我正确阅读了您的代码,问题是您使用的是2个不同的模块。

尝试为控制器使用相同的模块

 angular.module('sameModule', [])

    .controller('loginController', function($scope, Authentication){
...}

和服务/工厂一样

     angular.module('sameModule', [])

.factory('Authentication', function($http){...
}

或将服务/工厂的模块注入控制器模块:

angular.module('starter.controllers', ['starter.services'])

另请阅读此topic,它可以帮助您理解这个想法......

希望它会有所帮助。

答案 1 :(得分:0)

我发现了我的问题

.factory('Authentication', function($http){

return {
    login:  function(formData) {
        $http({
            method  : 'GET',
            url     : 'http://localhost:8888/employees/login',
            params: formData
        })
        .success(function(respond){
            console.log(respond);
        })
    }
};