Javascript AngularJS:在ng repeat中调用控制器函数
我的控制器如下所示:Javascript AngularJS:在ng repeat中调用控制器函数,javascript,angularjs,function,angularjs-ng-repeat,Javascript,Angularjs,Function,Angularjs Ng Repeat,我的控制器如下所示: controller('MonthlyCalendarController', ['$scope', function($scope) { $scope.counter = 0; $scope.increment = function() { $scope.counter++; console.log($scope.counter); } }]) <div ng-repeat="x in y track
controller('MonthlyCalendarController', ['$scope', function($scope) {
$scope.counter = 0;
$scope.increment = function() {
$scope.counter++;
console.log($scope.counter);
}
}])
<div ng-repeat="x in y track by $index" ng-init="increment()">
counter: {{counter}}
</div>
我的HTML看起来像这样:
controller('MonthlyCalendarController', ['$scope', function($scope) {
$scope.counter = 0;
$scope.increment = function() {
$scope.counter++;
console.log($scope.counter);
}
}])
<div ng-repeat="x in y track by $index" ng-init="increment()">
counter: {{counter}}
</div>
计数器:{{counter}}
我的输出每次都是这样。它只显示“1”:
计数器:1
It console.logs()正确;记录增量数字。然而,我的HTML输出每次只有“1”。仅仅输出$index是不够的,因为我正在我的increment()
函数和$scope.counter
将!=$索引
。有什么想法吗?
“仅仅输出$index是不够的,因为我正在增量()函数中进行其他运算,$scope.counter将!=$index。有什么想法吗?”
您仍然可以通过以下方式使用$index
:
<div ng-repeat="x in y track by $index">
counter: {{increment($index)}}
</div>
$index返回重复元素的迭代器偏移量(0..length-1)
计数器
值为双向绑定,因此它将一直打印最后一个值
使用将给出迭代器偏移量的$index
试试这个:
var myApp=angular.module('myApp',[]);
myApp.controller(“MonthlyCalendarController”,MonthlyCalendarController);
功能月CalendarController($scope){
$scope.y=[0,1,2,3,4,5,6,7,8,9];
$scope.counter=0;
$scope.increment=函数(){
$scope.counter++;
console.log($scope.counter);
}
}
计数器:{{$index+1}
您可以使用ng init
函数设置每个项目的值:
为了证明我们可以独立于索引计算每个项目,下面的示例为每个项目分配下一个斐波那契数
您的模板:
<div ng-repeat="x in y track by $index" ng-init="increment(x)">
<strong>{{x.counter }}</strong>: {{ x.name}}
</div>
结果:
1: One
2: Two
3: Three
5: Four
8: Five
.您可以使用指令:
现场示范
var myApp=angular.module('myApp',[]);
myApp.controller(“MonthlyCalendarController”,MonthlyCalendarController);
功能月CalendarController($scope){
$scope.y=[0,1,2,3,4,5,6,7,8,9];
$scope.counter=0;
$scope.increment=函数(){
$scope.counter++;
console.log($scope.counter);
}
}
myApp.directive('increment',function(){
返回{
限制:'A',
是的,
范围:{
增量:“=”,
内部增量:“=”,
},
模板:“”,
链接:功能(范围、要素、属性){
scope.$parent.increment=scope.increment;
}
}
});代码>
计数器{{increment}
您试图实现的目标是什么导致您尝试这种方法?我正在构建一个日历,但ng repeat实际上与要调用的函数无关。我只需要在每次重复发生时调用函数。这就是为什么我在ng repeat中使用“x in y”;只是为了说明这个概念。但更详细地说,这是日历中的“天”,根据日历的值,在“天”中会显示不同的内容。调用括号中的函数而不是ng-init()似乎解决了我的问题。谢谢
1: One
2: Two
3: Three
5: Four
8: Five