-1

我正在构建一个 AngularJS 应用程序。我对填充 ng-value 的表单有疑问。

输入字段已填写,用户可以看到文本,但是当用户按下“更改”按钮时,它变得未定义。有什么想法吗?

我的控制器代码:

// Fictional data it wineById will be a JSON object.
$scope.wineById = {"id":"4","name":"fdfvs1","percentage":"vcxz1"}

$scope.edit = function () {
    var wine = {
        id:$scope.wineById.id,
        name:$scope.name,
        percentage:$scope.percentage
    };

    console.log($scope.name, $scope.percentage);
};

HTML:

<form novalidate ng-submit="edit()">
        <label>ID wine: <input type="text" ng-value="wineById.id" ng-model="id" ng-disabled="true"></label> <br>
        <label>Name wine: <input type="text" ng-value="wineById.name" ng-model="name"></label> <br>
        <label>Percentage wine: <input type="text" ng-value="wineById.percentage" ng-model="percentage"></label> <br>

        <input type="submit" value="Change">
</form>

情况1:

在我的字段中有现有的输入。按下按钮而不更改字段中的输入数据。一切都变得不确定。

案例2(有效的那个):

在我的字段中有现有的输入。更改具有不同数据的所有字段并按下按钮。一切都变了。

如何解决案例 1?

4

2 回答 2

1

ng-value如果您出于任何原因仍想使用,请按以下方式更改您的 html :

<form novalidate ng-submit="edit()">
  <label>ID wine:
   <input type="text" ng-init="id=wineById.id" ng-model="id" ng-value="wineById.id" ng-disabled="true">
  </label>
  <br>
  <label>Name wine:
    <input ng-init="name=wineById.name" type="text" ng-value="wineById.name" ng-model="name">
  </label>
  <br>
  <label>Percentage wine:
    <input ng-init="percentage=wineById.percentage" type="text" ng-value="wineById.percentage" ng-model="percentage">
  </label>
  <br>
  <input type="submit" value="Change">
</form>

更好的方法是使用 just ng-model(除非你不想要两种方式绑定)

<form novalidate ng-submit="edit()">
    <label>ID wine:
      <input type="text" ng-model="wineById.id" ng-disabled="true">
    </label>
    <br>
    <label>Name wine:
      <input type="text" ng-model="wineById.name">
    </label>
    <br>
    <label>Percentage wine:
      <input type="text" ng-model="wineById.percentage">
    </label>
    <br>

    <input type="submit" value="Change">
</form>

现场演示

于 2017-03-07T19:43:18.240 回答
0

为什么要使用 ng-value,angular 支持两种方式绑定,ng-model 足以绑定数据。

<form novalidate ng-submit="edit()">
    <label>ID wine: <input type="text" ng-model="id" ng-disabled="true"></label> <br>
    <label>Name wine: <input type="text" ng-model="name"></label> <br>
    <label>Percentage wine: <input type="text" ng-model="percentage"></label> <br>

    <input type="submit" value="Change">
</form>
于 2017-03-07T19:49:35.433 回答