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