Jak przekazać argumenty do metody end()
kontrolera z dyrektywy?Przekaż argumenty do metody kontrolera nadrzędnego z dyrektywy
dyrektywa
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);
};
});
Szablon:
<div ng-controller='Ctrl'>
<fileuploader on-end='end()'></fileuploader>
</div>
Zastanawiam się również, czy jest to A ngularny sposób robienia rzeczy, ponieważ nie widzę tego używanego nigdzie indziej. Może poniższe są bardziej kanciaste?
dyrektywa
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);
});
});
Szablon
<div ng-controller='Ctrl'>
<fileuploader on-end='file'></fileuploader>
</div>
To dodaje trochę indirec i jest to być może mniej do przodu niż wywołanie metody kontrolera.
możliwy duplikat [metody wywołania kontrolera nadrzędnego z dyrektywy w AngularJS] (http://stackoverflow.com/questions/15991137/calling-method-of-parent-controller-from-a-redirect-in-angularjs) – Stewie
Fiddles zawsze przyspiesza proces rozwiązywania, ale czy problem z przekazywaniem argumentów do funkcji 'end', czy też w ogóle nie działa? – Nix
@Nix, to było rzeczywiście moje pytanie. Możliwy duplikat dał mi odpowiedź. – Pickels