【问题标题】:ng-submit give old value after form submitng-submit 在表单提交后给出旧值
【发布时间】:2023-10-17 22:18:01
【问题描述】:

我是 angularjs 新手,ng-submit 在表单提交后给出旧值

var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
  $scope.myTxt = "You have not yet clicked submit";
  $scope.sidebarname = "Vendor";
  $scope.myFunc = function () {
      $scope.myTxt = "You clicked submit!";
      alert($scope.sidebarname);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">

<form ng-submit="myFunc()">
  <input ng-value="sidebarname" type="text">
  <input  type="submit">
</form>

<p>{{myTxt}}</p>



</div>

表单提交后 $scope.sidebarname 给出旧值 Vendor ,我已经阅读并搜索了它,但没有任何帮助。

任何帮助或建议都会有所帮助

【问题讨论】:

  • 使用 ng-model 作为输入值
  • ng-value 将做一种方式绑定...sidebarname 中的更改不会反映在其模型中。相同用途ng-model

标签: angularjs angularjs-1.6


【解决方案1】:

要绑定来自 HTML 页面和控制器的值,我们应该使用 ng-model。 在您的情况下,它始终从控制器中获取值,而不是被 HTML 页面中的值绑定。

ng-valueng-model 不同

<form ng-submit="myFunc()">
     <input ng-model="sidebarname" type="text">
     <input  type="submit">
</form>

<p>{{myTxt}}</p>

【讨论】:

    【解决方案2】:

    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
      $scope.myTxt = "You have not yet clicked submit";
      $scope.sidebarname = "Vendor";
      $scope.myFunc = function () {
          $scope.myTxt = "You clicked submit!";
          alert($scope.sidebarname);
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <form ng-submit="myFunc()">
      <input ng-model="sidebarname" type="text">
      <input  type="submit">
    </form>
    
    <p>{{myTxt}}</p>
    
    
    
    </div>

    【讨论】:

      【解决方案3】:

      试试:

      <form ng-submit="myFunc()">
        <input ng-model="sidebarname" type="text">
        <input  type="submit">
      </form>
      

      注意:ng-modeldifferent 来自 ng-value

      【讨论】: