javascript - 具有动态输入值的 Angular 形式

标签 javascript html angularjs forms data-binding

我遇到了 Angular 问题,无法从我的输入中获取动态值。

这就是我正在努力做的事情。当用户单击 map 时, Angular 会用纬度/经度填充隐藏的表单字段,然后用户提交表单,这最终会导致 Controller 上丢失数据。

这是相关的 Controller 代码:

$scope.formData = {};

    $scope.submit = function(addressform) {
      addressService.createAdddress($scope.formData).then(function(result) {
        $scope.addressResponse = result;
      }, function(err) {
          alert(err);
      });
    }

    $scope.userSelectedPoint = function () {
      $scope.lat = map.getLat();
      $scope.lon = map.getLon();
      $scope.address = map.getAddress();
    }

这是相关的 HTML:

<form id="address_form" name="addressform" ng-submit="submit(addressform)">

   <input "lattitude" name="lattitude" type="hidden" ng-model="formData.lattitude" value="{{lat}}">
   <input id="longitude" name="longitude"type="hidden" ng-model="formData.longitude" value="{{lon}}">

   <p>Selected Address: {{address}}</p>
</form>

chrome 检查器中一切看起来都正常( map 上的随机点):

enter image description here

但是,当我提交此表单并打印出 $scope.formData 时,我得到一个空对象:

$scope.formData
Object {}

我在这里做错了什么?为什么我的 Controller 中的 formData 为空,而显然该值是在 HTML 中设置的(从我粘贴的屏幕截图中可以看出)?

最佳答案

您需要将值分配给ng-model变量,而不是value

作为

<input "lattitude" name="lattitude" type="hidden" ng-model="formData.lattitude" />
<input id="longitude" name="longitude"type="hidden" ng-model="formData.longitude" />

将值分配给formData.lattitude

$scope.formData = {};
$scope.userSelectedPoint = function () {
  $scope.formData.lattitude = map.getLat();
  $scope.formData.longitude  = map.getLon();
  $scope.formData.address = map.getAddress();
}

在 Angular 中,如果您为变量提供一个值,并使用ng-model将该变量分配给输入,则输入将获取变量的值,如果我们更改输入值变量值将获取改变。

因此,您将 formData 对象的 lattitude 属性分配给输入。这意味着如果您更改 $scope.formData.lattitude 输入值就会发生变化。

关于javascript - 具有动态输入值的 Angular 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31238052/

相关文章:

javascript - 如何限制分页显示的页数

javascript - 如何滑动不同的 ionic 标签

javascript - 如何在 Ace Editor 中显示文件内容

jquery - 将 id 添加到 dom 元素的 javascript 性能权衡是什么?

Jquery 不将 var 打印为字符串

javascript - Django 身份验证 : CSRF Failed

javascript - 在 Controller 中访问 ng-repeat 别名表达式

javascript - 使用 foreach 或带有 javascript 的 map 将复杂对象添加到数组中

javascript - 如何隐藏 Angular Material mdToast?

javascript - 错误: Connection lost: The server closed the connection. mysql Node