看到這個問題問了幾次,但我看不出如何將答案應用於我的問題。嘗試上傳文件時,我一直收到此錯誤。AngularJS錯誤:不可分配的模型表達式
Error: Non-assignable model expression: undefined (directive: fileReader)
我怎麼能解決這個問題?
我已經包括了所有的互相作用的文件,即使我相當肯定在fileDirective.js
fileDirective.js發生錯誤。包含此指令:
spreadsheetApp.directive('fileReader', function() {
return {
scope: {
file: '='
},
restrict: 'E',
template: "<input type='file' onchange='angular.element(this).scope().upload(this)'>",
link: function (scope, element, attrs) {
scope.upload = function (element) {
scope.$apply(function (scope) {
scope.file = element.files[0];
});
};
scope.$watch('file', function() {
if (scope.file) {
var reader = new FileReader();
reader.onload = (function (file) {
return function (env) {
scope.$apply(function() {
scope.file.contents = env.target.result;
});
}
}(scope.file));
reader.readAsText(scope.file);
}
}, true);
}
};
});
(這實際上是從here借來的。)
的index.html:
<html ng-app="spreadsheetApp">
...
<ng-view></ng-view>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="js/app.js"></script>
<script src="js/directives/fileDirective.js"></script>
<script src="js/controllers/spreadsheetController.js"></script>
...
</html>
app.js: '使用嚴格的';
var spreadsheetApp = angular.module('spreadsheetApp',[]);
spreadsheetApp.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: 'spreadsheetController',
templateUrl: 'views/innerHTML.html'
});
});
而且innerHTML.html的內容只不過是: <file-reader> </file-reader>
仍然有同樣的錯誤;沒有改變。 – user2494584
我剛添加了一個可以工作的jsfiddle。檢查出來並嘗試調整。 –