[英]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.