我有一个简单的ng-click,目前正在通过ng-init从ng-repeat传递$ index值。
我想知道的是如何将另一个定义的值传递给我的ng-click?
当前HTML:
<div ng-repeat="values in Categories" id="history-{{$index}}" ng-init="sectionIndex = $index">
{{ values.Name }}, {{ values.Amount }}
</div>
<div>
<div class="left" ng-click="scrollLeft(sectionIndex)"></div>
<div class="right" ng-click="scrollRight(sectionIndex)"></div>
</div>
JS:
$scope.scrollLeft = scrollLeftRight.moveLeft;
$scope.scrollRight = scrollLeftRight.moveRight;
app.factory('scrollLeftRight', function () {
return {
moveLeft: function (sectionIndex) {
var scrollViewport_width = $(window).width();
var pixelsToMove = 0;
$('#history-' + sectionIndex).scrollLeft(pixelsToMove - 100);
pixelsToMove = pixelsToMove - 100;
if (pixelsToMove <= 0) {
pixelsToMove = 0; // reset
} else {
pixelsToMove = pixelsToMove;
}
},
moveRight: function (sectionIndex) {
var scrollViewport_width = $(window).width();
var pixelsToMove = 0;
$('#history-' + sectionIndex).scrollLeft(pixelsToMove + 100);
pixelsToMove = pixelsToMove + 100;
if (pixelsToMove >= scrollViewport_width) {
pixelsToMove = scrollViewport_width;
} else {
pixelsToMove = pixelsToMove;
}
}
};
});
我想知道的是,我如何在ng-init中传递另一个值(如果可能的话),如下所示:
<div ng-repeat="values in Categories" id="history-{{$index}}" ng-init="sectionIndex = $index, tableID='history'">
这样我的第二个参数tableID就可以传递给我的函数了:
moveRight: function (sectionIndex, tableID) {
所以我不再需要通过以下方式直接概述我的身份:
$('#history-' + sectionIndex).scrollLeft(pixelsToMove - 100);
但相反:
$(tableID + sectionIndex).scrollLeft(pixelsToMove - 100);
答案 0 :(得分:1)
有一些方法可以做到这一点:我知道其中两个:p
1- 虚拟方式您可以将A data-yourVariable添加到您的代码中,如下所示:
<div ng-repeat="values in Categories" id="history-{{$index}}" ng-init="sectionIndex = $index" data-table="history">
在你的ng-click中,你可以这样做:
ng-click(sectionIndex,this.parent().data('table'));
2- 简单方式:您可以像这样在ng-init中传递一个对象:
ng-init="{sectionIndex: $index, tableID:'history}"
注意:您必须在ng-init中使用(:)代替(=),因为您想将它用作对象
所以在你的ng-click中:
ng-click(sectionIndex,tableID);
希望有所帮助