1

这可能听起来像一个愚蠢的问题,但我已经被困在这个问题上几个小时了。我忽略了一些非常简单的东西。

我有一个输出项目列表的 ng-repeat 指令:

<div ng-controller="MyCtrl">
    <div ng-repeat="foo in bars">
    ....
    </div>
</div>

然后在里面,在列表的末尾,我有一个要添加到列表中的表单:

<div class="add">
    <input ng-model="valueToAdd" class="weight" />
    <a ng-click="addStuff()" class="button-small"> + Add</a>    
</div>

addStuff()方法在我的控制器上:

function MyCtrl($scope) {
    $scope.addStuff= function () {
        alert($scope.valueToAdd);
    }
}

$scope.valueToAdd总是给我undefined

我错过了什么?

编辑:这是重现此问题的朋克:http ://plnkr.co/edit/YoGdx8?p=preview

4

1 回答 1

4

ng-repeat为其每个重复的部分创建新的范围,因此valueToAdd绑定到该内部范围上的一个变量,该变量是外部范围的子级。当addStuff被调用时,它会起作用,因为它通过范围继承访问外部范围上的方法,但它尝试引用的变量未在该外部范围中定义。

尝试将值传递给addStuff

ng-click="addStuff(valueToAdd)"

这是一个分叉的 Plunk

于 2013-06-10T20:04:22.367 回答