这可能听起来像一个愚蠢的问题,但我已经被困在这个问题上几个小时了。我必须有一些非常简单的东西。
我有一个ng-repeat指令,它输出一个项目列表:
<div ng-controller="MyCtrl">
<div ng-repeat="foo in bars">
....
</div>
然后在列表的末尾我有一个表单要添加到列表中:
<div class="add">
<input ng-model="valueToAdd" class="weight" />
<a ng-click="addStuff()" class="button-small"> + Add</a>
</div>
</div>
addStuff()
方法在我的控制器上:
function MyCtrl($scope) {
$scope.addStuff= function () {
alert($scope.valueToAdd);
}
}
但$scope.valueToAdd
总是给我undefined
。
我错过了什么?
编辑:这是一个重现此问题的方法:http://plnkr.co/edit/YoGdx8?p=preview
答案 0 :(得分:4)
ng-repeat
为每个重复的部分创建新范围,因此valueToAdd
绑定到该内部范围的变量,该范围是外部范围的子节点。调用addStuff
时,它可以工作,因为它通过范围继承访问外部作用域上的方法,但它尝试引用的变量未在该外部作用域中定义。
尝试将值传递给addStuff
:
ng-click="addStuff(valueToAdd)"