从ng-repeat输入框访问控制器中的角度范围值

时间:2015-03-05 21:36:06

标签: javascript angularjs

我想知道如何从输入框访问$ scope值,该输入框恰好位于控制器内部的ng-repeat中。

查看

<div ng-repeat="item in items track by $index">
  <form ng-submit="addItem(item, $index)">
    <input ng-model="newItem.value" type="text"></input>
  </form>
</div>

控制器

$scope.addItem = function(item, index) {
  var itemVal = $scope.newItem.value;
  console.log(itemVal);
}

主要问题是我无法从控制器内部的任何一个输入框访问该值。

  • 代码已针对此问题进行了简化

真的很感激任何帮助。感谢

2 个答案:

答案 0 :(得分:0)

如果每个项目需要一个输入,则需要为每个项目保留一个新模型。

如果items是一个列表,您可以将这些newItem保存在单独的列表中(jsfiddle):

查看

<div ng-repeat="item in items track by $index">
  <form ng-submit="addItem(item, $index)">
    <input ng-model="newItems[$index]" type="text"></input>
  </form>
</div>

控制器

$scope.newItems = [];
$scope.addItem = function(item, index) {
  var itemVal = $scope.newItems[index];
  console.log(itemVal);
}

答案 1 :(得分:0)

我相信你只有一个值,你想在ng-repeat中显示,然后在控制器内初始化newItem,如

$scope.newItem = {}

由于控制器级别的newItem初始化,ng-repeat永远不会为它创建新的子范围,它将重用父级创建的子范围。