我在我的项目中使用angularjs。在进程/模块中,如果数据库中已存在某个数据输入,则不会提交表单。例如,此过程:注册/注册。如果用户输入了已被某人使用的用户名,则不会提交该表单。并且将在用户通过比较(在for循环中)输入数据之前加载用户名列表的控制器中进行检查。我的问题是,这是检查数据的好方法还是我必须使用$ http?
编辑:
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group"><label class="control-label">Username</label>
<input type="text" ng-model="reg.username" usernameAvailable
name="username" class="form-control input-md"
placeholder="Username" required />
<div ng-if="regForm.$pending.usernameExists">checking....</div>
<div ng-if="regForm.$error.usernameExists">username exists
already
</div>
</div>
</div>
mainApp.directive('usernameAvailable', function($timeout, $q, $http) {
return {
restrict: 'AE',
require: 'ngModel',
link: function(scope, elm, attr, model) {
model.$asyncValidators.usernameExists = function() {
//here you should access the backend, to check if username exists
//and return a promise
// var defer = $q.defer();
// $timeout(function(){
// model.$setValidity('usernameExists', true);
// defer.resolve;
// }, 1000);
// return defer.promise;
console.log(model);
return $http.get(BASE_URL+'Register/validate?u='+username).
then(function(res){+$timeout(function(){
model.$setValidity('usernameExists', !!res.data);
}, 1000);
});
};
}
}
});
Php控制器:
public function validate(){
$this->load->model('account_model');
$data =$this->account_model->exist($this->input->get('u'));
echo json_encode($data);
}
答案 0 :(得分:0)
您应该将数据带到服务器。在那里,应该在db中触发查询以检查此数据是否已存在。如果确实如此,则在UI上显示错误消息,并且不保存其他明智的保存,并保存成功消息。
火灾查询(示例)类似于:
SELECT * FROM users WHERE username='myName'
如果记录大于0,那么你拥有的是重复值。
不要在UI上获取所有记录,然后遍历它们。
想一想:
等等。
希望它能指导你。