【发布时间】:2015-08-20 21:50:03
【问题描述】:
我正在使用指令来解析 xls 文件并通过范围将数据传递给按钮。问题是在链接函数中,我绑定到元素更改事件并调用解析 xls 文件的函数,但在 handleFile 函数中未定义范围,因此我无法将数据传递给按钮。将数据获取到按钮的正确方法是什么?
angular.module('fileReaderModule')
.directive('xlsReader', function(){
return {
scope: {
search: "&"
},
link: function(scope, e, attr) {
e.bind('change', handleFile);
},
template: '<input type="file" ng-model="xlsFile"><button ng-click="search({stuff: scope.stuff})">Search</button>'
}
function handleFile(scope, e) {
var files = e.target.files;
var i,f;
for (i = 0, f = files[i]; i != files.length; ++i) {
var reader = new FileReader();
var name = f.name;
reader.onload = function(e) {
var data = e.target.result;
var workbook = XLSX.read(data, {type: 'binary'});
scope.stuff = workbook.Strings; // scope not available here
/* DO SOMETHING WITH workbook HERE */
var result = {};
workbook.SheetNames.forEach(function(sheetName) {
var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
if(roa.length > 0){
result[sheetName] = roa;
}
});
};
reader.readAsBinaryString(f);
}
}
})
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope