Vor allem muss ich nur sagen, dass ich eine vollständige google/stackoverflow Suche in Bezug auf dieses Problem und ich konnte nichts finden, was helfen würde.AngularJs - Direktive nicht Controller Variablen aktualisieren
Also, mit, dass hinter uns, hier ist mein Problem:
ich diese Richtlinie habe, die die Daten in einer einfachen Eingabetyp Datei ausgewählt zurückgeben sollten. In meinem console.log kommt die Daten gut, aber wenn ich nach der Wertänderung in meinem Controller sehe, tut es einfach nie.
Hier ist meine Richtlinie:
app.directive('esFileRead', [
function() {
return {
restrict: 'A',
$scope: {
esFileRead: '='
},
link: function ($scope, $elem) {
$elem.bind('change', function (changeEvent) {
if (FileReader) {
var reader = new FileReader();
reader.onload = function (loadEvent) {
$scope.$apply(function() {
$scope.esFileRead= loadEvent.target.result;
console.log($scope.esFileRead);
});
};
reader.readAsDataURL(changeEvent.target.files[0]);
}
else {
// FileReader not supported
}
});
}
}
}
]);
Mein Controller:
app.controller('MainController', [
'$rootScope',
'$scope',
'DataManagementService',
function ($rootScope, $scope, DataManagementService) {
$scope.importFile = "";
$scope.$watch('importFile', function (newValue, oldValue) {
console.log(newValue);
if(newValue && newValue !== oldValue) {
DataManagementService.importData(newValue);
}
});
}
]);
Meine Ansicht:
<input id="btnImport" type="file" es-file-read="importFile"/>
Dies ist peinlich. Hatte '$ scope' anstelle von' scope' in meiner Direktive. Ich akzeptiere immer noch deine Antwort, weil ich es ziemlich ordentlich finde. Vielen Dank! – EpaXapate
@ EpaXapate das war kein Problem, es sei denn, Sie hatten 1. Parameter Name ist $ Scope. Problem muss etwas anderes sein –
Ich meine nicht in der Link-Funktion, ich meine in der tatsächlichen Rückkehr-Funktion. – EpaXapate