【问题标题】:ng-repeat not accessing $scope variableng-repeat 不访问 $scope 变量
【发布时间】:2015-11-09 10:13:07
【问题描述】:

$scope.new 是一个变量..我试图在 ng-repeat 中访问它,但 ng-repeat 将“new”视为局部变量并仅在其范围内更改其值...我想给出具体的$scope.new 变量的索引...不使用函数...谢谢....

<html>
<style>
.yoyo{font-size:30px;}
</style>


<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope) {
$scope.new=0;
});
</script>

<body>

<div data-ng-app="myApp" ng-controller="customersCtrl" data-ng-init="names=['Jani','Hege','Kai']">
  <p>Looping with ng-repeat:</p>
  <ul>
    <li data-ng-repeat="x in names" ng-click="new=$index" ng-class="yoyo:new==$index">
      {{ x }}{{$index}}{{new}}
    </li>
  </ul>


</body>
</html>

【问题讨论】:

  • 当您执行“new=$index”时,控制器中的“new”也会更新。你到底想达到什么目标?
  • 使用这个:: ng-click="$parent.new=$index"
  • 让我知道它是否有效?@shank???
  • 非常感谢罗伊...它工作正常...但是 $parent 如何访问 $scope ?

标签: angularjs angularjs-ng-repeat


【解决方案1】:

ng-repeat 使用隔离作用域,因此当您尝试更新 ng-repeat 中的新变量时,它会更新本地 $scope 在 ng-click 指令中使用 $parent.new 而不是只使用 new 。请参阅下面的工作代码 sn-p -

var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope) {
$scope.new=0;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body>

<div data-ng-app="myApp" ng-controller="customersCtrl" data-ng-init="names=['Jani','Hege','Kai']">
  <p>Looping with ng-repeat:</p>
  <ul>
    <li data-ng-repeat="x in names" ng-click="$parent.new=$index" ng-class="yoyo:new==$index">
      {{ x }}{{$index}}{{new}}
    </li>
  </ul>
  
  </div>


</body>

希望这会有所帮助!

【讨论】:

  • 亲爱的 manoj...我无法将此答案标记为正确的 bcoz roy 已经在上面回答了
  • 当然@shank!只是为了回答您的第二个查询, $parent 是对父范围的引用。因此,正如我在答案中提到的,ng-repeat 创建隔离范围,这是您在控制器中创建的范围的子范围。因此,要访问 ng-repeat 中的任何属性,您必须使用 $parent 访问父范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
相关资源
最近更新 更多