从AngularJS中的子指令获取对控制器的访问

特雷弗·多纳休(Trevor Donahue)

我有一个小的角度应用程序,需要列出实体列表(在我的情况下为端点)。实体保存在数组中。就本示例而言,假设它们位于控制器上。

为了更好地分离逻辑,我创建了两个指令:endpointList和endpoint,如下所示:

指令声明如下:

 myApp.directive('endpointList', function () {
        return {
            restrict:'EA',
            controller:'EndpointCtrl',
            controllerAs:'epCtrl',
            transclude: true,
            replace: true,
            templateUrl: 'endpoint-list.html'
        };
    })
    .directive('endpoint', function ($compile, $log) {
        return {
            scope: {
                scope:'=ngModel',
                func:'&',
                index:'@'
            },
            restrict:'EA',
            replace:true,
            templateUrl: 'endpoint.html',
            require:'?^endpointList',
            compile: function(tElem, tAtt) {
                return function(scope, el, attr, ctrl) {
                    // ctrl.addResource(scope);
                }
            }
        };
    });

的模板 endpoint-list.html

...
<section>
    <table class="table table-hover">
        <thead>
            <tr>
                <th><input type="checkbox" ng-model="selectAll" ng-click="toggleSelectAll()"/></th>
                <th>Label</th>
                <th>Last updated</th>
                <th>Status</th>
                <th>Sync</th>
            </tr>
        </thead>
        <tbody ng-transclude></tbody>
    </table>
</section>
...

模板endpoint.html

...
<td>
    <a ng-click="sync()" class="glyphicon glyphicon-cloud">CALL ME</a>
</td>
...

我这样使用它们:

<endpoint-list>
    <endpoint ng-repeat="ep in endpoints" scope="ep" ng-model="ep" func="selectEp(scope)" index="{{$index}}"></end-point>
</endpoint-list>

我的问题是,在endpoint.html中,我有一个链接,当单击该链接时,我希望它在控制器上调用函数sync():

$scope.sync = function(endpoint) {
    console.log('syncing:');
    console.log(endpoint);
};

我怎样才能做到这一点?任何提示,不胜感激。

这是plunkr:http ://plnkr.co/edit/js7syyZ8u0i9KoOIgwdQ

Manish Kr。舒克拉

您可以将服务创建为中间人,然后将其注入控制器和指令中,仅此而已。只要您的控制器具有对服务的引用,您就可以直接从指令的模板中调用该服务的方法。

myApp.service("middleManService", function() {
    this.sync = function(endpoint) {
        console.log('syncing:');
        console.log(endpoint);
    };

        this.test = 'blah';

        this.selectAll = false;
        this.deleteBtnVisible = false;
        this.editBtnVisible = false;

        this.endpoints = [
            {
                label: '2.2.0',
                url: 'https://version-2_2_0-api.company.com/test/test?api_key=xxx',
                selected: false
            },
            {
                label: '2.3.0',
                url: 'https://version-2_3_0-api.company.com/test/test?api_key=xxx',
                selected: false
            }
        ];
    };
});

将对此服务的引用添加到您的控制器中:

 myApp.controller('EndpointCtrl',    
    function ($scope, middleManService) {
        $scope.middleManService = middleManService;

然后在您的html中,将其命名为:

    <td>
        <a ng-click="middleManService.sync()" class="glyphicon glyphicon-cloud">CALL ME</a>
    </td>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在AngularJS中递归访问父指令的控制器

来自分类Dev

嵌套指令-无法将args从Angularjs中的子指令传递给控制器方法

来自分类Dev

angularjs:指令的访问控制器

来自分类Dev

AngularJS:从控制器访问指令数据

来自分类Dev

AngularJS-我如何访问控制器中的指令属性

来自分类Dev

在动态生成的AngularJS指令中访问父控制器

来自分类Dev

AngularJS指令从控制器中的Ajax调用获取数据

来自分类Dev

指令无权访问控制器功能(AngularJS)

来自分类Dev

AngularJS从指令访问别名控制器属性

来自分类Dev

在子指令中获取父指令控制器

来自分类Dev

AngularJS-访问子指令控制器

来自分类Dev

如何在指令中访问子控制器和父控制器?

来自分类Dev

在子指令中访问父指令的控制器作用域变量

来自分类Dev

在控制器内部访问AngularJs指令变量

来自分类Dev

AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

来自分类Dev

在控制器中访问指令属性

来自分类Dev

如何访问从父指令传递但在控制器中定义的子指令中的功能?

来自分类Dev

AngularJS控制器变量未传递给子指令

来自分类Dev

从AngularJS中的指令模板访问内联控制器变量

来自分类Dev

AngularJS:通过属性从TD中的指令获取文本并通过控制器$ scope中的引发事件?

来自分类Dev

如何从父控制器访问子指令范围

来自分类Dev

AngularJS中的控制器/指令继承

来自分类Dev

如何在指令中访问子控制器和父控制器?

来自分类Dev

AngularJS-从子节点访问父控制器->使用controllerAs表示法的子指令

来自分类Dev

在子指令中访问父指令的控制器作用域变量

来自分类Dev

angularjs控制器访问指令作用域值

来自分类Dev

在子控制器中访问父控制器

来自分类Dev

AngularJS 从父到子指令控制器函数调用

来自分类Dev

AngularJS - 从控制器访问 JSON 数据中的子对象

Related 相关文章

  1. 1

    在AngularJS中递归访问父指令的控制器

  2. 2

    嵌套指令-无法将args从Angularjs中的子指令传递给控制器方法

  3. 3

    angularjs:指令的访问控制器

  4. 4

    AngularJS:从控制器访问指令数据

  5. 5

    AngularJS-我如何访问控制器中的指令属性

  6. 6

    在动态生成的AngularJS指令中访问父控制器

  7. 7

    AngularJS指令从控制器中的Ajax调用获取数据

  8. 8

    指令无权访问控制器功能(AngularJS)

  9. 9

    AngularJS从指令访问别名控制器属性

  10. 10

    在子指令中获取父指令控制器

  11. 11

    AngularJS-访问子指令控制器

  12. 12

    如何在指令中访问子控制器和父控制器?

  13. 13

    在子指令中访问父指令的控制器作用域变量

  14. 14

    在控制器内部访问AngularJs指令变量

  15. 15

    AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

  16. 16

    在控制器中访问指令属性

  17. 17

    如何访问从父指令传递但在控制器中定义的子指令中的功能?

  18. 18

    AngularJS控制器变量未传递给子指令

  19. 19

    从AngularJS中的指令模板访问内联控制器变量

  20. 20

    AngularJS:通过属性从TD中的指令获取文本并通过控制器$ scope中的引发事件?

  21. 21

    如何从父控制器访问子指令范围

  22. 22

    AngularJS中的控制器/指令继承

  23. 23

    如何在指令中访问子控制器和父控制器?

  24. 24

    AngularJS-从子节点访问父控制器->使用controllerAs表示法的子指令

  25. 25

    在子指令中访问父指令的控制器作用域变量

  26. 26

    angularjs控制器访问指令作用域值

  27. 27

    在子控制器中访问父控制器

  28. 28

    AngularJS 从父到子指令控制器函数调用

  29. 29

    AngularJS - 从控制器访问 JSON 数据中的子对象

热门标签

归档