Come passare gli argomenti al metodo end()
del controller dalla direttiva?Passare gli argomenti al metodo del controllore padre dalla direttiva
direttiva
var fileuploader = function() {
return {
restrict: 'E',
scope: {
onEnd: '&',
},
controller: function ($scope) {
// When upload is done
$scope.onEnd(/* file */);
}
};
}
controller
module.controller('Ctrl', function ($scope) {
$scope.end = function (file) {
console.log('file', file);
};
});
Template:
<div ng-controller='Ctrl'>
<fileuploader on-end='end()'></fileuploader>
</div>
Mi chiedo anche se questa è la a modo nobile di fare le cose perché non lo vedo usato da nessun'altra parte. Forse il seguente è più angolare?
direttiva
var fileuploader = function() {
return {
restrict: 'E',
scope: {
onEnd: '=',
},
controller: function ($scope) {
// When upload is done
$scope.file = file;
}
};
}
controller
module.controller('Ctrl', function ($scope) {
$scope.$watch('file', function (val) {
console.log('file', val);
});
});
Template
<div ng-controller='Ctrl'>
<fileuploader on-end='file'></fileuploader>
</div>
Questo aggiunge alcune indirec tuttavia, è forse meno avanti, quindi chiama un metodo di controllo.
possibile duplicazione di [metodo di chiamata del controller padre da una direttiva in AngularJS] (http://stackoverflow.com/questions/15991137/calling-method-of-parent-controller-from-a-directive-in-angularjs) – Stewie
I fiddles accelerano sempre il processo di soluzione, ma il tuo problema passa gli argomenti alla funzione 'end', o non funziona affatto per te? – Nix
@Nix, questa era davvero la mia domanda. L'eventuale duplicato mi ha dato la risposta. – Pickels