角度指令中的回调函数

时间:2014-01-10 21:17:36

标签: javascript angularjs angularjs-directive

我希望在我编写的指令上有一个回调函数,而不创建一个独立的范围。该指令只是使元素可以调整大小,因此不需要一个单独的范围(我认为在这种情况下不希望有孤立的范围)。

最好的方法是什么?我试过了,

.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

2 个答案:

答案 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];

该指令与控制器的范围相同。所以你可以直接引用这个函数。