0
在我只是說我做了一個完整的谷歌/ stackoverflow搜索關於這個問題,我找不到任何幫助。AngularJs - 不更新控制器變量的指令
所以,與我們後面,這裏是我的問題:
我有這個指令,它應該回到一個簡單的輸入類型的文件選擇的數據。 在我的console.log數據出來很好,但當我注意到我的控制器中的值更改它根本就不會。
這裏是我的指令:
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
}
});
}
}
}
]);
我的控制器:
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);
}
});
}
]);
我的觀點:
<input id="btnImport" type="file" es-file-read="importFile"/>
這很尷尬。在我的指令聲明中有'$ scope'而不是'scope'。我仍然接受你的答案,因爲我覺得它很整潔。謝謝! – EpaXapate
@EpaXapate這不是問題,除非你有第一個參數名稱是'$ scope' ..問題一定是別的 –
我不是指在鏈接函數中,我的意思是在實際的返回函數中。 – EpaXapate