【问题标题】:Can you ng-init the value of ng-model based on other values on the scope?您可以根据作用域上的其他值对 ng-model 的值进行 ng-init 吗?
【发布时间】:2015-06-05 14:01:14
【问题描述】:

我正在尝试计算用户输入的 2 个值,并将该结果设置为另一个值的 ng-model。但是我似乎无法让这段代码工作。

<input type="number" ng-model="a">
<input type="number" ng-model="b">
<input type="number" ng-init="c = a * b" ng-model="c">

我也尝试过使用 parseFloat:

//in controller
$scope.parseFloat = parseFloat();

<input type="number" ng-init="c = (parseFloat(a) * parseFloat(b))" ng-model="c">

我可以将我想要的结果作为标签 {{a * b | number:2 | currency}},但不能作为 ng-model。有什么想法吗?

【问题讨论】:

  • ng-init 只能与 ng-repeat 指令一起使用。您应该使用 c 作为 ng-model 并更新 on-change 事件的值
  • @fantarama 准确地说,ng-init 可以在任何地方使用,但适当的用法是为 ng-repeat 的特殊属性起别名。
  • @PSL 我同意,但由于文档强烈反对在 ng-repeat 范围之外使用,我不认为将其用于其他目的的有效解决方案
  • @fantarama 是的...我同意 101%,事实上我在链接的答案中也详细提到了它。我只在你说can be used only 时发表了评论。 :)

标签: angularjs angular-ngmodel parseint parsefloat angularjs-ng-init


【解决方案1】:

ng-init 仅在节点初始化时调用一次。您可以尝试在两个输入上使用ng-change 来设置 c 的值

<input type="number" ng-model="a" ng-change='c=a*b'>
<input type="number" ng-model="b" ng-change='c=a*b'>

【讨论】:

  • 这对我来说很有意义,但仍然无法正常工作。即使我有 type="number",我实际上也遇到了 NAN 错误。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2016-12-09
  • 2017-11-01
  • 2015-12-19
  • 1970-01-01
  • 2015-08-13
  • 2016-09-12
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多