2017-03-22 44 views
0

下面是我的看法页面NG-型号未在AngularJS NG-值工作

<form name="form"> 
    <label>Name</label> 
    <input name="name" type="text" ng-model='user.name' ng-value='emp.name' required /> 
    <span ng-show="form.name.$touched && form.name.$invalid">Name is required</span> 
    <button ng-disabled="form.name.$touched && form.name.$invalid" ng-click='formUpdate()'>Update</button> 
</form> 

这是我的控制器

$scope.formUpdate = function() { 
    $scope.status = false; 
    $http({ 
    method : 'POST', 
    url : 'model/update.php', 
    data : $scope.user , 
    headers : {'Content-Type': 'application/x-www-form-urlencoded'}   

    }).then(function mySuccess(response) { 
    $scope.update = response.data; 
    console.log(response.data); 
    }, function myError(response) { 
    $scope.update = response.statusText; 

    }); 
}; 

当我使用数据:$scope.user在我的HTTP调用我在控制台上得到空白值,但如果我使用数据:$scope.emp,那么我永远不会获得输入字段的更新值,而是获取输入字段的旧值。

+0

的目的是什么,如果部份'NG-value'什么是预期的结果? – Mistalis

+0

我正在用表单的帮助来实现更新逻辑,ng值从表中提取旧值,并且如果用户想更新其字段值,那么新值应该反映在DB中 –

+0

这是我猜到的,参见[**我的答案**](http://stackoverflow.com/a/42952719/4927984)。 – Mistalis

回答

0

试试这段代码;

$scope.formUpdate = function(){ 
    $scope.status = false; 
    $scope.$applyAsync(); 

    $http({ 
    method : 'POST', 
    url : 'model/update.php', 
    data : $scope.user , 
    headers : {'Content-Type': 'application/x-www-form-urlencoded'}   

    }).then(function mySuccess(response) { 
    $scope.update = response.data; 
    $scope.$applyAsync(); 
    console.log(response.data); 
    }, function myError(response) { 
    $scope.update = response.statusText; 
    $scope.$applyAsync(); 
    }); 

    }; 
2

ng-value将给定的表达式绑定到元素的值。

正如我理解你的问题,你试图初始化输入值为emp.name

您应该将输入更改为:

<input type="text" ng-model='user.name' ng-init='user.name = emp.name' required /> 

ng-init docs

+0

谢谢米斯塔利斯,给出的解决方案对我无效 –

+0

@wasimbeg你能解释一下“*没有工作*”吗?没有更多的精准度,无法帮助你... – Mistalis