我有以下功能:
$scope.getObjectCount = function() {
var theLength = _.flatten($scope.myObjects);
var i;
for ( i = 0; i < theLength.length; i++) {
//return i here??
}
return i;
}
theLength.length的计算结果为'5',因为myObjects中有5个对象。
这是在ng-repeat内部调用的,它被称为5次。我希望它返回0,1,2,3,最后4.但它每次都返回5。
我想要做的是返回数组中每个对象的索引,所以我在计算它们并每次都返回...或者尝试。
有人可以建议我如何解决这个问题吗?
答案 0 :(得分:1)
如果您只在应用的某个部分使用此功能,则可以创建一个角度工厂作为计数器。由于数据封装在服务中,您可以从任何地方调用它。
.factory("MyCounter", function() {
var start = 0;
return {
increment: function() {
start += 1;
},
currIndex: function() {
return start;
},
reset: function() {
start = 0;
}
};
});
现在只需将此依赖项注入控制器并在视图中调用它。
例如:
.controller("MyController", function(MyCounter) {
// Publish our counter object to scope
$scope.counter = MyCounter;
});
在您看来:
<div some-value="counter.increment()">...</div>
答案 1 :(得分:0)
如果您只想在每次返回的值中增加一个,那么这个简单的函数应该对您有用:
var i = -1;
function returnCount(){
i++;
return i;
}
alert(returnCount()); // 0
alert(returnCount()); // 1
alert(returnCount()); // 2
alert(returnCount()); // 3
alert(returnCount()); // 4
<强> See the DEMO here 强>
但是我相信这会在长期内引起问题..所以如果这不是你想要的那么你应该更好地解释它,因为从你对我的评论的回应,我能得到的只是你想要做到这一点我上面写的是什么..
编辑您应该在您调用该函数的地方使用theLength属性:
这将是你的重复部分:
for(var i=0; i<theLength; i++){
returnCount();
}
现在这将持续到对象计数并返回它们的索引0,1,2,3,4 ......