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;
}