Diretiva AngularJS vinculando uma function com vários argumentos

Estou tendo problemas para vincular uma function definida em um controlador com uma function de retorno de chamada em uma diretiva. Meu código parece com o seguinte:

No meu controlador:

$scope.handleDrop = function ( elementId, file ) { console.log( 'handleDrop called' ); } 

Então minha diretiva:

 .directive( 'myDirective', function () { return { scope: { onDrop: '&' }, link: function(scope, elem, attrs) { var myFile, elemId = [...] scope.onDrop(elemId, myFile); } } ); 

E na minha página html:

  

Não ter sorte com o código acima. Pelo que eu li em vários tutoriais eu entendo que devo especificar os argumentos na página HTML?

Há um pequeno erro no seu código, por favor, tente o código abaixo e ele deve funcionar para você

        

Método alternativo que sobreviverá à minificação

deixe seu html como estava:

  

mude a chamada para:

 scope.onDrop()('123','125') 

observe o parêntese extra de abertura e fechamento dado a onDrop. Isso irá instanciar a function em vez de injetar o código da function.

Por que é melhor

  1. alterar os nomes dos parâmetros na definição handleDrop () (ou até mesmo adicionar mais alguns, se você manuseá-los corretamente) não fará com que você altere cada uma das injeções de diretivas no html. muito DRYer.

  2. Como o @TrueWill sugeriu, eu tenho quase certeza de que as outras soluções não sobreviverão à minificação, enquanto esse código permanece com a máxima flexibilidade e é agnóstico em nome.

outra razão pessoal é a syntax do object, o que me faz escrever muito mais código:

 functionName({xName: x, yName: y}) 

(e adicionando a assinatura da function em cada chamada diretiva)

como se opor a

 functionName()(x,y) 

(manutenção zero para o seu html)

Eu encontrei esta grande solução aqui .

espero que ajude!