【问题标题】:AngularJS scope variable always undefinedAngularJS 范围变量始终未定义
【发布时间】:2013-06-05 22:22:22
【问题描述】:

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

我有一个输出项目列表的 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

【问题讨论】:

  • 似乎工作得很好 (plunker)
  • 嗯好的。让我再看一遍。例如,可能是我复制/粘贴的代码之外的东西。典型的;-)
  • 可能 valueToAdd 超出了 MyCtrl 的范围
  • @Atrix1987 好电话,我认为它不会,但它可能 :)
  • 大家好,刚刚添加了一个 plunker 的链接(我将你的 plunker @robertklep 分叉并进行了修改,使其更类似于我的实际代码,现在我也遇到了同样的问题)。

标签: javascript html angularjs angularjs-scope angularjs-ng-repeat


【解决方案1】:

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

尝试将值传递给addStuff

ng-click="addStuff(valueToAdd)"

Here is a forked Plunk

【讨论】:

  • 宾果游戏!这很有意义。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
相关资源
最近更新 更多