使用先前值进行ng-change

时间:2015-09-05 02:10:29

标签: javascript angularjs

我有以下输入

<input style="margin-left:24px;" id="numOfRows" class="setupInput" size="10"
    ng-model="rowVal" ng-init="rowVal = gameCtrl.getNumOfRows()" ng-change="gameCtrl.setNumOfRows({{rowVal}})">

我遇到的问题是当我更改框中的值时,它总是落后1。

EX:当前值= 6

  • 将值更改为3 - 没有任何反应
  • 将值更改为2 - {{gameCtrl.getNumOfRows()}}返回3

为什么落后1更新?

1 个答案:

答案 0 :(得分:4)

您可能会遇到以下几个问题:

1)不要在ng-change表达式中使用插值({{}})。 即改变

ng-change="gameCtrl.setNumOfRows({{rowVal}})"

ng-change="gameCtrl.setNumOfRows(rowVal)"

2)不要使用ng-init进行初始化,即控制器的用途,使用控制器初始化rowVal的值。

3)确保您没有与ng-change / ng-model同步问题有关的旧版角度。

4)假设您正在使用控制器As语法(并且之前的语句错误),请始终尝试将属性绑定到控制器实例,即使用gameCtrl.rowVal。 (这可能是错误的,因为从问题的上下文中不清楚它是否真的应属于控制器实例,还是在ng-repeat内部或创建子范围的内容)。