我在对象上使用嵌套的ng-repeat和过滤器。第一个ng-repeat是对gapHeader对象中headerId的过滤。第二个ng-repeat过滤gapSection,sectionId到相应的headerID。
我有一个编辑页面,它位于一个单独的模态窗口中。目的是编辑对应于headerID&的内容。子对象的sectionID)这也有一个单独的控件。数据通过服务共享。
我的问题我为每个gapSection子对象都有一个按钮,它打开编辑页面模态,当我将每个部分中当前部分的$ index值传递给服务时,我得到的$ index仅对应于第二次重复?例如,如果我单击gapSection上的2 ng-repeat内的按钮(headerId:2,sectionId:2),我得到$ 1的索引。我需要$ index为2,它对应于gapSection中的子对象位置。
是否可以传递真正的$ index,它对应于gapSection的原始未过滤对象中定义的$ index?感谢对此的任何评论,谢谢!
对象:
var data ={
gapHeader:[{headerId:1,name:"General Requiremets",isApplicable:true},
{headerId:2,name:"Insurance",isApplicable:false}],
gapSection:[{headerId:1,sectionId:1,requirement:"A facility is required to have company structure",finding:null,cmeasures:null,cprocedures:null,personResp:null,isAction:null},
{headerId:2,sectionId:1,requirement:"Organisation must have public liablity",finding:null,cmeasures:null,cprocedures:null,personResp:null,isAction:null},
{headerId:2,sectionId:2,requirement:"Facility must hold workers compensation insurance",finding:null,cmeasures:null,cprocedures:null,personResp:null,isAction:null}]
};
答案 0 :(得分:14)
如果您需要真正的索引,甚至不需要传递$index
属性,只需传递对象并从原始列表中获取索引即可。
即
$scope.gapSectionFn = function(obj){
var idx = data.gapSection.indexOf(obj);
}
同样不清楚你的问题是否真的可能是嵌套的ng-repeat问题,因为根据你的情况,gapSection是内部ng-repeat,你正在调用内部ng-repeat的调用,需要{{1}索引。它应该是可用的,但DOM过滤器的存在只会重新生成项目及其索引,您也可以通过执行 ng-init
来获取,即在视图{{1}上并使用gapSection's
。
如果您尝试访问父ng-repeat索引,那么ng-init比$ parent更合适。$ index。由于ng-init是专门为此设计的,因此在父ng-repeat上你会写ng-init="actIndex=$index"
并使用parentIndex。