不同的角度范围变化行为

时间:2017-02-22 08:06:15

标签: html angularjs

HTML

<input ng-model="test1.param">
<input ng-model="test2">

控制器

$scope.test1 = { param: null };
$scope.test2 = null;

在两个输入中输入一些文字后:

  • $scope.test1.param成为输入文字。
  • $scope.test2仍为 null

为什么$scope.test2值不会改变?

2 个答案:

答案 0 :(得分:1)

  

“如果你使用ng-model,你必须有一个点。”做你的   model指向一个object.property,你会很高兴。

当孩子范围在起作用时会发生这种情况 - 如子路线或ng-repeats。子范围创造了它自己的价值,并且名称冲突诞生了。

你在这里有更好的解释: https://stackoverflow.com/a/22768720/1081079

答案 1 :(得分:0)

当你在儿童范围内时会发生这种情况。 父对象在子范围内是已知的,但是为子对象重新创建了简单变量。 因此,当您使用$ scope.test1时,它将采用父变量, 但是当你使用$ scope.test2时,它会为子节点创建一个新变量,因此不会更改父节点。 要解决此问题,请将$ scope.test2更改为$ scope.test1对象 $ scope.test2 = {param:null} 或使用$ parent服务:

  <input ng-model="$parent.test2">