1
我試圖將文件中的文本保存到rootscope中的字符串中。我至今是一個指令,它加載正常,並檢查它返回以下輸出中的一個文本文件,上面寫着根Angular.js作用域傳遞文件讀取器錯誤
function callData($rootScope) {
console.log("function working");
console.log($rootScope.data);
}
angular.module('spreadsheetApp').directive('fileReader', function($rootScope) {
return {
restrict: 'E',
scope: true,
templateUrl:'views/fileReaderTemplate.html',
controller: 'fileReaderController',
link: function (scope, element, attributes, controller) {
$element.bind("change", function(event) {
var files = event.target.files;
var reader = new FileReader();
reader.onload = function() {
$rootScope.data = this.result;
console.log($rootScope.data);
callData($rootScope.data);
console.log("55");
};
reader.readAsText(files[0]);
});
}
}
});
功能:
# Text file
Hello, world!
輸出:
Hello, world!
function working
fileDirective.js:44
Uncaught TypeError: Cannot read property 'data' of undefined fileDirective.js:45
callData fileDirective.js:45
reader.onload
我如何才能訪問rootScope,不需要angular.element? – user1876508
正如你想通過功能的rootcope,你需要做的 callData($ rootScope); 而不是 callData($ rootScope.data); 因爲你現在試圖在callData函數中做的事情實際上是$ routScope.data.data,它不存在,因此錯誤... –