我希望在我编写的指令上有一个回调函数,而不创建一个独立的范围。该指令只是使元素可以调整大小,因此不需要一个单独的范围(我认为在这种情况下不希望有孤立的范围)。
最好的方法是什么?我试过了,
.controller("MyController", function ($scope) {
$scope.myFunc = function () {
console.log("test");
};
})
.directive('resizeable', function ($document, $parse) {
return function (scope, element, attr) {
var func = $parse(attr.onFunc);
}
}
带
<div class="main" resizeable="" on-Func="myFunc()">
怎么做?
试试这个JSFiddle。
答案 0 :(得分:2)
你很接近,这就是我要做的事情:
.directive('resizeable', ['$document', '$parse', function ($document, $parse) {
return {
link: function ($scope, $element, $attrs) {
var func = $parse($attrs.resizeable);
// do stuff...
func($scope);
}
};
}]);
HTML将是:
<div data-resizeable="myFunc()"></div>
这是一个有效的演示:http://plnkr.co/edit/as6Tylj0zPpjVsUaDDC6?p=preview
答案 1 :(得分:0)
on-Func="myFunc"
没有括号。在指令中:
var func = scope[attr.onFunc];
该指令与控制器的范围相同。所以你可以直接引用这个函数。