2014-08-27 132 views
0

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

<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: {   
      } 
     }); 
    } 
}); 

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

回答

0

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

+0

谢谢..它工作得很好 – 2014-08-27 08:55:57

0

你不想传递用户名和密码到getData()的原因是什么?

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

或者你也可以使用$ HTTP params参数(不参数),只是传:

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

我没有想到首先传递用户名和密码。另外,是的,我改变了参数参数的参数。它工作正常 – 2014-08-27 09:16:24

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 
      } 
     }); 
+0

你不能只传递$ scope.username和$ scope.password。它说$范围没有定义。最好的方法是将getData()函数定义更改为包含params,然后在控制器中,调用$ scope.credentials = AppService.getData($ scope.username,$ scope.password); – 2014-08-27 09:19:41

相关问题