我有一个包含 2 个字段的表单:用户名和密码。
当我的用户名模型更改时,我向 API 发出请求以执行一些检查。
当我以 t 毫秒间隔对工厂进行 x 次调用时$resource
,我想知道是否:
- 在我的控制器中,最后
$promise
收到的将对应于用户最后一次输入。 - 之前的承诺将被取消。
我试图找到一种方法来模拟我的 API 调用延迟(因为我在本地工作并且每个响应都是即时的),但我只能找到$http
服务示例。
这是一个 jsFiddle 来公开这个案例:http:
//jsfiddle.net/Jfwh9/1/
HTML
<div ng-app="myApp">
<form ng-controller="loginCtrl">
Username: {{ username }}
<br>Password: {{ password }}
<br>
<input name="username" placeholder="enter your username" type="text"
ng-model="username" ng-change="checkUsername()">
<input name="password" placeholder="enter your password" type="password"
ng-model="password">
</form>
</div>
应用程序
var myApp = angular.module('myApp', ['ngResource']);
/*
* PRE-LOGIN
*
*/
myApp.factory( 'preLogin', ['$resource',
function( $resource, constants ) {
// Check if a username exists
return $resource( '/api/prelogin', {},
{
post: {
method : 'POST'
}
});
}]);
/*
* Login Controller
*
*
*/
myApp.controller('loginCtrl', ['$scope', 'preLogin',
function( $scope, preLogin ) {
$scope.username = '';
$scope.password = '';
// Do some check on the username...
$scope.checkUsername = function() {
console.log('prelogin... ', $scope.username);
preLogin.post({
username: $scope.username
}).$promise.then( function( data ) { // Success
console.log(data);
}, function( error ) { // Error
console.log(error);
});
}
}]);
谢谢!