我创建了一个用于处理二进制文件上传的指令。这是一个使用它的plunker:
http://plnkr.co/edit/9qcKW5A6yq1hS8OuWTNK?p=preview
这个想法是模型由控制器初始化(最初)只是当前文件名 - 而不是当前数据。
- 如果用户点击链接,数据将被下载到他的机器上。
- 如果用户单击“-”按钮,模型的文件数据和文件名部分都将设置为未定义。
- 如果用户单击“+”并选择他自己的文件,模型将获得一个新的文件名,以及相关文件的数据(以 base64 格式)。现在,如果您这样做,并查看浏览器的控制台,您会发现在 Chrome 和 Firefox 中,都报告了一个非常奇怪的错误(来自 Angular 的内部),关于访问我们不允许的内容。Firefox 甚至特别提到了安全性。
停止报告错误,而不是分配
model.filedata = values;
尝试
model.filedata = '';
...确实,错误消失了。这很奇怪——浏览器似乎在保持某种关于“值”中包含的 base64 数据字符串的状态,并且 Angular 在其内部观察者中触摸它时存在问题。
这是我这边的错误,Angular 方面的错误,还是浏览器方面的错误?
非常感谢任何帮助。