AngularJs - 将值从视图传递到控制器然后传递给服务

时间:2014-08-27 08:33:30

标签: angularjs angularjs-service angularjs-controller

我看过类似的问题,但都没有意义。 我有api,我将用来登录人。他们提供用户名和密码,然后我查询api,它返回帮助我决定是否登录用户的数据。 我试图弄清楚如何将值从视图传递到服务,并使用正确的url字符串来查询url。这是视图

<div ng-controller="AppController">
    <input type="text" placeholder="username" ng-model="password" />        
    <input type="password" placeholder="Password" ng-model="password" />   
    <input type="submit" value="Sign In" ng-click="login()" />
</div>

然后这是控制器

app.controller('AppController', function ($scope, AppService) {
    $scope.login = function () {
        $scope.credentials = AppService.getData();
    }        
    $scope.username;
    $scope.password;
});

然后服务

app.service('AppService', function ($http) {
    this.getData = function () {
        return $http({
            method: 'POST',
            url: 'http://www.example.com/api/parent',/*should be http://www.example.com/api/parent?username=username&password=password */
            parameters: {           
            }
        });
    }
});

我需要帮助的是如何在视图中附加用户名和密码,以便像在服务中的注释中一样创建正确的查询字符串。 感谢

3 个答案:

答案 0 :(得分:0)

在从控制器调用服务时,传递用户名和密码,如此AppService.getdata($ scope.username,$ scope.password)。同样修改AppService中的函数定义,以期望用户名和服务作为参数。

答案 1 :(得分:0)

您不希望将用户名和密码传递给getData()的原因是什么?

而是$http您可以使用$resource并使用自定义逻辑和操作创建更复杂的对象。

或者您可以使用$ http params参数(不是参数)并只传递:

parameters{'username': username, 'password': password}

答案 2 :(得分:0)

您可以传递如下参数:

return $http({
            method: 'POST',
            url: 'http://www.example.com/api/parent',/*should be http://www.example.com/api/parent?username=username&password=password */
            parameters: {     
                  username: $scope.username,
                  password: $scope.password
            }
        });