繁体   English   中英

处理对angularjs指令的已包含内容的单击

[英]Handling click on transcluded content of an angularjs directive

所以可以说我有一个看起来像这样的指令:

(function () {
    'use strict';

    angular
        .module('app')
        .directive('foo', foo);

    /* @ngInject */
    function foo() {
        var directive =  {
            restrict : 'E',
            controller: controller,
            controllerAs: 'vm',
            link: link,
            transclude : true,
            replace : true,
            bindToController: true,
            scope: {},
            template : '<div><div ng-transclude></div>'
        };

        return directive;

        function controller() {
            var vm = this;
            vm.click = function () {
                // do something, add class whatever
            }
        }
        function link(scope, elem, attrs) {}
    }



}());

现在,如果我像这样使用指令:

<foo>
   <button ng-click="vm.click()">Click me!</button>
</foo>

我想访问指令的点击功能,该怎么做?

如果其中的指令本身是用隔离的范围定义的,则不能将被包含的内容范围创建为其指令范围的子级。

请参阅: 为什么ng-transclude的作用域不是其指令的作用域的子级-如果该指令具有隔离的作用域?

因此,kwan245的答案对于您的特定示例是正确的。

从指令声明中删除scope: {} ,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM