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
值不会改变?
答案 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">