You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS新手求助:ng-submit提交表单后获取旧值问题

解决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()">
    <!-- 核心:给输入框添加ng-model绑定到$scope的sidebarname -->
    <input type="text" ng-model="sidebarname" placeholder="输入新名称">
    <button type="submit">提交</button>
  </form>
  <p>{{myTxt}}</p>
</div>

问题根源分析

你之前拿到旧值,最可能的原因是输入框没有通过ng-model绑定到$scope.sidebarname:
AngularJS的双向数据绑定完全依赖ng-model指令,如果输入框没加这个绑定,用户输入的内容根本不会同步到$scope对象里,提交时自然只能拿到初始的"Vendor"值。

另外补充个小细节:ng-submit已经帮我们自动阻止了表单默认的页面刷新行为,所以不用额外写preventDefault()~

更直观的写法(可选)

如果你想更明确地传递最新值,可以把变量作为参数传入提交函数,代码可读性会更好:

<form ng-submit="myFunc(sidebarname)">
  <input type="text" ng-model="sidebarname" placeholder="输入新名称">
  <button type="submit">提交</button>
</form>
$scope.myFunc = function (newSidebarName) {
  $scope.myTxt = "You clicked submit!";
  alert(newSidebarName); // 直接获取最新输入值
}

这样修改后,提交表单时就能正确拿到用户输入的最新内容啦!

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:57:49