当前位置: 首页 > 知识库问答 >
问题:

angularjs指令内部ngRepeat的$索引

武骁
2023-03-14

我正试图找到在与自定义指令一起使用的ngRepeat中获取索引位置的最佳方法。我试图解决的问题是,对于ngRepeat的每次迭代,我希望知道我在迭代中的位置,这样我就可以根据索引位置创建自定义模板。

除非有更好的方法,否则我将尝试基于指令中的此留档执行此功能:

http://docs.angularjs.org/guide/directive

我很难理解这个陈述到底在告诉我什么。所以,我试图做的是...

首先,ngRepeat指令与我的指令一起在“testTemboard”中使用:

<ul>
   <li my-attr="test()" my-directive ng-repeat="value in values" class="span2">
   </li>
</ul>

接下来,我的指令定义了:

angular.module('myModule', [])
       .directive('myDirective', function() {
            return {
                replace : true,
                transclude : true,
                scope : {
                    test: '&myAttr'
                },
                templateUrl: 'partials/myTemplate.html',
                link : function(scope, element, attrs) {
                    alert(scope.count);
                }
            }
        });

最后,我尝试在控制器中为引用指令的父模板定义“test”函数。

function TestTemplateCtrl($scope, testTemplate) {
    $scope.test = function() {
        alert('in test');
        $scope.count = "1";
    }
}

所以第一个问题是我在父控制器中的“测试”函数根本没有被执行。也许我不明白应该如何调用父控制器中的测试函数。现在我也没有实际增加,但是如果我可以让测试函数触发,当我到达那个点时,上面是增加计数的正确方法吗?

共有2个答案

戎志勇
2023-03-14

正如您所指出的,您可以使用$index获取索引。

至于为什么测试函数没有启动,您没有执行它。在指令的链接函数中,您需要如下内容:

scope.$eval(attrs.myAttr);
胡鸿羲
2023-03-14

您可以考虑将$index作为指令属性传递,而不是范围。$父。$index

<li my-directive index="{{$index}}" ng-repeat="value in values">

指令:

myApp.directive('myDirective', function() {
    return {
        replace: true,
        // transclude: true,
        scope: {
            index: '@'
        },
        template: '<div>testing {{index}}</div>',
        link: function(scope, element, attrs) {
            // ...
        }
    }
});

不停摆弄

 类似资料:
  • 本文向大家介绍AngularJS ngRepeat,包括了AngularJS ngRepeat的使用技巧和注意事项,需要的朋友参考一下 示例 ng-repeat 是Angular中的内置指令,它使您可以迭代数组或对象,并使您能够为集合中的每个项目重复一次元素。 ng-重复数组 其中: item =集合中的单个项目 itemCollection =您要迭代的数组 ng-重复一个对象 其中: key

  • 本文向大家介绍AngularJS内置指令,包括了AngularJS内置指令的使用技巧和注意事项,需要的朋友参考一下 指令,我将其理解为AngularJS操作HTML element的一种途径。 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生。 这篇日志简单记录了一些内置指令,先使用起来,再谈一些有趣的东西。 内置指令 所有的内置指令的前缀

  • 问题内容: 我有一个指令,用于最近重构的表单验证样板。在扩展之前,请允许我进一步解释该指令。 指令用法: 以前,我的指令看起来像这样,并且 有效 。 html模板变得一团糟,我想将按钮包装在模板的“内部”,而不是在按钮之后。因此,我将其重构为我认为更好的指令。 因此,我注意到的是element.html()现在检索templateUrl的内容,而不是我指令的内部HTML的内容。在指令被templa

  • 问题内容: 我有显示如下的模块模式: 我遇到的麻烦是将$ watch集成到其中。通过“ $ window”服务专门监视窗口的大小。 [编辑]: 我意识到这一直是我的问题…当我忘记将其实现为属性时,我只能使用element … @ _ @; 问题答案: 您不需要手表。只需绑定到窗口上的大小调整事件: 演示

  • 本文向大家介绍AngularJS 内置指令备忘单,包括了AngularJS 内置指令备忘单的使用技巧和注意事项,需要的朋友参考一下 示例 ng-app  设置AngularJS部分。 ng-init  设置默认变量值。 ng-bind    替代{{}}模板。 ng-bind-template    将多个表达式绑定到视图。 ng-non-bindable    声明数据不可绑定。 ng-bind

  • 主要内容:AngularJS 指令,AngularJS 实例,数据绑定,AngularJS 实例,重复 HTML 元素,AngularJS 实例,AngularJS 实例,ng-app 指令,ng-init 指令,ng-model 指令,ng-repeat 指令,创建自定义的指令,AngularJS 实例,限制使用AngularJS 通过被称为 指令 的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 AngularJS 指令