我无法弄清楚为什么我的指令没有从父页面调用回调函数。你能帮忙吗?

角度代码:

    angular
        .module('myApp')
        .directive('testDirective', function () {
            return {
                bindToController: {
                    foo: '@',
                    myCallback: '&'
                },
                controller: function () {
                },
                controllerAs: 'vm',
                restrict: 'E',
                replace: true,
                scope: {},
                template: '<div>Foo is: {{ vm.foo }} <button data-ng-click="vm.myCallback()">Click to call Callback</button></div>'
            };
        });

    angular
        .module('myApp')
        .controller('ParentController', function () {
            this.myParentCallback = function () {
                alert('Called the parent callback function');
            };
        });


HTML代码:

<body>
    <div data-ng-app="myApp" data-ng-controller="ParentController as ctrl">
        <test-directive foo="bar!" my-callback="ctrl.myParentCallBack"></test-directive>
    </div>
</body>


如您所见,foo绑定正确,但是我无法让myCallback工作...

有什么想法吗?

它在plnkr中:(http://plnkr.co/edit/niVL5iAeOJ6XTpkpL9fu?p=preview

最佳答案

这是一个案例问题:在回调中使用小写b传递ctrl.myParentCallback。

另外,您的plnkr带有vm.myParentCallBack的错误。用。。。来代替:

<test-directive foo="bar!" my-callback="ctrl.myParentCallback()"></test-directive>


http://plnkr.co/edit/VnMUekTSZyk5WagsPqkL

关于javascript - AngularJS-使用指令调用回调函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33040725/

10-13 02:13