Angularjs:通过单击按钮从数据库中自动填充文本框值

时间:2016-02-19 10:34:59

标签: javascript angularjs

这是我在视图上的代码:

input type="text" name="passno" ng-keyup="fetchdata()" class="form-control" ng-model="FormData.passno"

input name ="firstname" type="text" class="form-control"  ng-model="FormData.fname" ng-disabled="isDisabled"

input  name="lastname"  type="text" class="form-control" ng-model="FormData.lname" ng-disabled="isDisabled"

在控制器端:

$scope.FormData = {passno:''};
    $scope.fetchdata = function() {

        $scope.$watch('FormData.passno',function(){
        $http({
            method: 'POST',
            url: 'server/company/getPassnoData',
            data: {passno:$scope.FormData.passno },
            headers: {'X-API-KEY': $rootScope.currentUser.key}

        })
            .success(function(data){
                $scope.autofill = data;
                if(data) {
                    SweetAlert.swal({
                        title: "Warning?",
                        text: "User with this passport number is already registered as "+$scope.autofill.CandData.f_name,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#DD6B55",
                        confirmButtonText: "Auto Fill",
                        cancelButtonText: "Reset",
                        closeOnConfirm: false,
                        closeOnCancel: false
                    }, function (isConfirm) {
                     if (isConfirm) {                           

    $scope.FormData.fname= $scope.autofill.CandData.f_name;
$scope.FormData.lname= $scope.autofill.CandData.l_name;
});

我的问题是甜蜜警报会正确生成警报。当我点击自动填充它显示成功,但文本框值不能显示,直到我在特定文本框上手动单击它然后将显示文本框上的所有值,但我想只显示为通过单击自动填充。基本上我想动态显示文本框值。我只接受护照号码字段的输入而不是发送请求,结果是我必须动态显示的名字,姓氏字段。

1 个答案:

答案 0 :(得分:0)

如果您更改了非角度组件内的任何内容,则无法运行$digest以对其链接的所有位置进行更改。

您需要对非角度组件应用更改。

添加 $scope.$apply()

喜欢这个

$scope.FormData.fname= $scope.autofill.CandData.f_name;
$scope.FormData.lname= $scope.autofill.CandData.l_name;
$scope.$apply()

或者像这样

$scope.$apply(function(){
    $scope.FormData.fname= $scope.autofill.CandData.f_name;
    $scope.FormData.lname= $scope.autofill.CandData.l_name;  
})