角度范围变量始终未定义

时间:2013-06-10 09:38:34

标签: angularjs

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

我有一个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

1 个答案:

答案 0 :(得分:4)

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

尝试将值传递给addStuff

ng-click="addStuff(valueToAdd)"

Here is a forked Plunk