【问题标题】:Why the form does not get updated while the $scope does AngularJS为什么在 $scope 执行 AngularJS 时表单没有更新
【发布时间】:2015-03-15 14:06:03
【问题描述】:

所以我有一个表单,当我加载表单时,我会用它调用一个函数。该函数用一些数据填充表单。

$scope.fill = function {

                            $scope.formData.name = 'Sara';
                            console.log($scope.formData.name);

                        })

在索引视图上我有以下内容:

<div class="form-group">                
<input type="text" class="form-control" name="name" ng-model="formData.name"></div>

所以当我按下按钮时:

<button ng-controller="formController" ui-sref="front.form.profile" ng-click="fill()">Fill</button>

我希望用我定义的值填写有关名称的表单。

我遇到的问题是 $scope 已更新,在 console.log 上我得到了名称 sara 但表单仍然为空且未更新>

我在函数末尾添加了 $scope.apply() 但它没有做任何改变。 请帮忙

【问题讨论】:

  • 您没有收到任何控制台错误吗?并请关闭输入标签
  • 不,我没有收到任何错误

标签: angularjs forms


【解决方案1】:

ng-controller="formController" ui-sref="front.form.profile" ng-click="fill()"

您还创建了子控制器,$scope 也是子范围,因此如果您更改子范围的值,则父范围的“$scope.formData.name”的值不会改变。

您可以通过指令使用双向绑定。 参考资料:https://docs.angularjs.org/guide/directive

希望对你有帮助!

【讨论】:

【解决方案2】:

您的按钮有自己的控制器:

<button ng-controller="formController"

这只会为按钮创建一个子范围。去掉它。您还应该创建 ui-sref 属性,因为您不需要按钮来填充表单,而不是导航到另一个状态。

【讨论】:

  • 但表单处于另一种状态。所以我导航到表单所在的状态,然后更新它
  • 按钮在首页,表单在front.form.profile,所以我导航到那里并调用函数
  • 按钮中的控制器就是我的功能所在的控制器。我应该删除它吗?
  • 这根本不是您的代码所做的。它所做的是为按钮创建一个 new 范围,并使用这个新范围创建一个 formController 的 new 实例。如果您的目标是导航到不同的状态,请使用 ui-sref 指令并传递参数。
  • 我想导航到不同的状态并调用函数来填充我的视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 2017-06-28
  • 1970-01-01
相关资源
最近更新 更多