2014-11-07 4 views
0

Я просто изучаю углы и создаю несколько простых директив, чтобы попробовать что-то. У меня есть (как мне кажется) небольшая проблема, пытающаяся передать параметры из директивы функции контроллера в корневую область.AngularJS - вызывающие методы в родительской области из изолированной области действия не передают аргументы

Обратите внимание на следующий jsfiddle и обратите внимание, что я нажимаю кнопку (изнутри директивы), дает мне неопределенный, тогда как кажется, что он работает нормально, если щелкнуть по кнопке самого контроллера.

jsfiddle

Am Я просто не хватает чего-то синтаксис мудрым? Или я совершенно неправ, как это должно работать? Я сделал несколько попыток размещения переменных в разных местах (обратите внимание на «xxx») в скрипте, чтобы увидеть, что-нибудь будет работать, и я получаю либо ошибки, либо ничего.

<div ng-app="myApp" ng-controller="myController"> 

    <!-- root scope --> 
    <div style="background-color: teal"> 
     <button ng-click="propertyF('yyy')" >F</button> 
    </div> 

    <!-- directive firing methods on the root scope --> 
    <div style="background-color: coral"> 
     <my-directive3 property6="propertyF()"></my-directive3> 
    </div> 

</div> 


var app = angular 
.module('myApp', []) 
.controller('myController', [ 
    '$scope', function($scope) { 
     $scope.propertyF = function (aValue) { 
      alert("propertyF fired: '" + aValue + "'"); 
     }; 
    } 
]) 
.directive('myDirective3', function() { 
    var directive = { 
     link : function link(scope, element, attrs) { 
      console.log("link directive 3"); 
     }, 
     restrict : 'EA', 
     replace : true, 
     scope : { 
      property6: '&' 
     }, 
     template: '<button ng-click="property6(\'xxx\')">property6</button>' 
    }; 
    return directive; 
}); 

ответ

0

С помощью угловых работ вы передаете функцию привязки и указания аргументов. propertyF() не указывает никаких аргументов.

property6="propertyF(arg)" 

Затем вы можете сделать уникальный синтаксис угловых для обработки:

ng-click="property6({arg:\'xxx\'})" 

http://jsfiddle.net/ue1trkt9/1/

Смежные вопросы