我有一个简单的 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) {
这样我就不再需要通过以下方式直接概述我的 ID:
$('#history-' + sectionIndex).scrollLeft(pixelsToMove - 100);
但是:
$(tableID + sectionIndex).scrollLeft(pixelsToMove - 100);
最佳答案
有一些方法可以做到这一点:我知道其中 2 个:p
1-虚拟方式您可以将 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);
希望有帮助
关于javascript - AngularJS - 单击时将值传递给服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24164375/