因为
ng-repeat当它
ng-repeat在放置指令的位置重复模板时,确实会在每次迭代中创建一个新的子范围(通常是继承的)。
那么当
ng-repeat创建一个新的原型继承的子范围时会发生什么呢?在子作用域中,它包含所有属性,其中
primitive
在创建子作用域和对象值时会采用属性初始值及其引用,因此父作用域值的更新将在子作用域值中更新,反之亦然。
在这里,在您的情况下,您在
ng-model="kindSelected"变量内部,
ng-repeat因此作用域变量在
ng-repeat作用域内创建,而在外部
ng-repeat指令中不可用。
要解决,你可以使用这样的问题
object,同时限定
ng-model,这样你可以遵循
Dot rule,同时限定
ng-model。这意味着您可以定义一个称为
$scope.model内部控制器的对象,然后添加
kindSelected属性,以便在选中复选框时更新该值。
标记
<div ng-repeat="kind in movieKinds"> <input type="radio" name="movies" ng-value="kind" ng-model="kindSelected"> {{kind.name}}<br></div>Selected Movie :{{model.kindSelected}}码
$scope.model = {};解决此问题的另一种方法是使用
controllerAs语法,该语法将使用控制器的别名,因此在HTML上不会发生与范围层次结构相关的问题。无论您要使用哪个控制器变量,都可以使用该控制器的别名。



