2015-11-07 4 views
1

Я пытаюсь передать свои аргументы для передающего элемента вызывающему, но я не могу заставить его работать.AngularJS - Включить переменную в обратном вызове директивы

Примечание: I может вызывать функцию без аргументов. Но как только я добавить аргументы, он разбивает:

Вот Plunker: (http://embed.plnkr.co/autsgiBlWjz8cX2BL6Sj/preview)

Для справки, вот код:

// Код идет здесь угловой .module ('myApp', []);

angular 
    .module('myApp') 
    .directive('myDirective', myDirective) 
    .controller('ParentController', ParentController); 

function myDirective() { 
    return { 
    restrict: 'E', 
    controller: {}, 
    controllerAs: 'vm', 
    bindToController: { 
     myCallback: '&' 
    }, 
    scope: {}, 
    template: '<div><button data-ng-click="myCallback({msg:123})Call Callback</button></div>' 
    }; 
} 

function ParentController() { 
    var self = this; 

    self.parentCallback = parentCallback; 

    function parentCallback(args) { 
    alert('The message is: ' + args.msg); 
    } 
} 

HTML код здесь:

<head> 
    <script data-require="[email protected]*" data-semver="2.0.0-alpha.45" src="https://code.angularjs.org/2.0.0-alpha.45/angular2.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body> 
    <div data-ng-app="myApp" data-ng-controller="ParentController as ctrl"> 
     <my-directive my-callback="ctrl.parentCallback(args)"></my-directive> 
    </div> 
    </body> 

</html> 

ответ

0

От angular doc

Часто желательно передавать данные из изолята сферы через выражения родительской области, это можно сделать, пропустив карту имена и значения локальных переменных в оболочку выражения fn. Для примера функция hideDialog отображает сообщение, когда скрывается диалог . Это указано в директиве, вызывая закрыть ({сообщение: 'закрытие на данный момент'}). Затем локальное переменное сообщение будет доступно в выражении on-close.

Если вы хотите получить args таким образом, шаблон <my-directive> «s должен быть, как показано ниже.

<div><button data-ng-click="myCallback({args: {msg:123}})">Call Callback</button></div> 
Смежные вопросы