【问题标题】:Angular - how to one-way link two input values?Angular - 如何单向链接两个输入值?
【发布时间】:2015-08-11 05:57:40
【问题描述】:

我有一个包含大量文本的大型 HTML 表单。有一些重复的输入字段,客户希望使用之前填充的值预填充底部字段,但不影响已填充的输入。

请考虑以下场景:您正在填写许可协议并在文本框中输入您的姓名。然后在文档的末尾,在签名字段旁边再次有一个输入框,用于输入您的姓名。此名称字段应填写您之前输入的值。但在某些情况下,其他人会代表您签署文件,然后这两个字段会有所不同。

显然,我不能将两个字段都链接到单个模型,因为底部字段必须是独立的。仅当顶部字段更改时才应更改,反之则不行。

有什么方法可以实现这两个字段的单向绑定,但保持它们链接到不同的模型?

如果可能的话,我更喜欢一些可以在 HTML 中使用的技巧来避免编码 Javascript 逻辑,因为这个 HTML 表单作为文档模板存储在数据库中,我想避免向其中添加大量 Javascript。

【问题讨论】:

  • 你无论如何都包括角度?为什么要包含简短的脚本
  • @Petr:因为如果我创建特定于 HTML 模板的脚本,我必须将它们与 HTML 模板一起存储在数据库中。我想尽可能避免这些模板的自定义脚本,到目前为止,对于每种模板都有一个控制器就足够了,而控制器不知道它附加到什么 HTML 代码。
  • 在 html 中存储 javascript
  • 谢谢,是的,这适用于简单的输入。但是,使用

标签: angularjs data-binding oneway


【解决方案1】:
<input ng-change="secondVal = firstVal" ng-model="firstVal">
...
<input ng-model="secondVal">

【讨论】:

  • @Martin 说他希望在 top 值改变时仍然更新 bottom 值。这在他的用例中不会有用。
  • 哦,根据您的评论 Okazari 更正了答案。
  • 是的,如果不为此用例调用函数,这会更干净。如果他有多个其他值要更新,他将需要使用一个函数。
【解决方案2】:

考虑使用 ng-change 来更新其他值:

HTML

<input ng-change="updateNameBot()" ng-model="nameTop">
<input ng-model="nameBot">

控制器

$scope.updateNameBot = function(){
      $scope.nameBot = $scope.nameTop;
}

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2015-02-21
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多