javascript - AngularJS - 单击时将值传递给服务

标签 javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个简单的 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/

相关文章:

javascript - 无法单击所有元素上的元素

javascript - AngularJS Google Map 指令 map 实例

javascript - 在 AngularJs 中将第一个空输入集中在 html 表单中

javascript - 如何从窗口javascript中删除对象

javascript - Angular 中的范围继承 $broadcast

javascript - 在使用 React-bootstrap 库时无法应用任何 Bootstrap 样式

javascript - 返回内部 $http promise

javascript - ng-disabled 不使用 <i> 标签使用 font-awesome

javascript - 从 AngularJS 将复杂对象传递给 WebAPI

javascript - 在 $sce.trustAsHtml 中填充双花括号