Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问控制器功能内的ng重复作用域_Javascript_Angularjs_Angularjs Ng Repeat_Ng Repeat - Fatal编程技术网

Javascript 访问控制器功能内的ng重复作用域

Javascript 访问控制器功能内的ng重复作用域,javascript,angularjs,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,说我有 <div ng-repeat="i in items"> <span ng-show="editing">i.something</span> <span ng-show="!editing">i.something</span> <a ng-click="dosomething(i)">click</a> </div> 如何仅访问ng repeat迭代的变量,我尝试将编辑作为参

说我有

<div ng-repeat="i in items">
  <span ng-show="editing">i.something</span>
  <span ng-show="!editing">i.something</span>
  <a ng-click="dosomething(i)">click</a>
</div>
如何仅访问ng repeat迭代的变量,我尝试将编辑作为参数传递给
dosomething
我尝试通过$scope.editing访问它,我一直在查看$rootScope文档。没办法解决

我承认我可以添加
editing
作为
I
的一个参数,但如果有一种方法可以分别访问每个作用域而不更改其他迭代的编辑,我不希望不必要地接触模型。

您的
dosomething()
函数在父作用域的上下文中运行(因此会影响所有项).
因此,您应该从
dosomething()
的主体中删除
$scope.editing=false

然后,在
ngClick
表达式中,可以插入
editing=false
,它将在
ngRepeat
为每个项目创建的子范围的上下文中进行计算,并且不影响其他项目

例如:


...

ng repeat指令创建子作用域并将它们绑定到每个“repeat”元素。因此,您可以通过这种方式访问子范围中的“编辑”变量

$scope.dosomething = function (model){
   //do stuff
 angular.element(model.currentTarget).scope().editing = flase;
}

如果我理解正确:

<div ng-repeat="i in items">
  <span ng-show="i.editing">i.something</span>
  <span ng-show="!i.editing">i.something</span>
  <a ng-click="dosomething(i)">click</a>
</div>

其中模型指的是ng重复项的(i)范围。

您的项包含哪种类型的数据?在何种情况下,您希望显示哪些数据?此处的//do stuff部分必须包含可以将编辑设置为true或false的条件。但我对你的问题感到困惑,因此无法为你提供解决方案。更清楚地了解将要实现的目标…抱歉,已经等待了一周,这对于其他场景来说是一个可行的解决方案,但那一次我想我正在尝试根据调用函数中的条件更改编辑。@Kiee:您可以返回一个值并根据该值设置编辑:
ng click=“editing=dosomething(I)”
$scope.dosomething = function (model){
   //do stuff
 angular.element(model.currentTarget).scope().editing = flase;
}
<div ng-repeat="i in items">
  <span ng-show="i.editing">i.something</span>
  <span ng-show="!i.editing">i.something</span>
  <a ng-click="dosomething(i)">click</a>
</div>
$scope.dosomething = function (model){
   //do stuff
   model.editing = false;
}