Javascript AngularJS从用户上传读取JSON

Javascript AngularJS从用户上传读取JSON,javascript,angularjs,Javascript,Angularjs,我希望允许用户上传一个JSON文件,并将JSON文件的内容分配给$scope变量 将文件内容分配给scope变量后,我希望完全放弃文件本身,而不将其存储在任何地方 如何有效地实现此功能?在您的模板中: <input type="file" onchange="angular.element(this).scope().onFileChange(this)"> “onchange”而不是“ng change”,因为它看起来不支持在文件上载输入控件上绑定带有ng change的内容 这

我希望允许用户上传一个JSON文件,并将JSON文件的内容分配给$scope变量

将文件内容分配给scope变量后,我希望完全放弃文件本身,而不将其存储在任何地方

如何有效地实现此功能?

在您的模板中:

<input type="file" onchange="angular.element(this).scope().onFileChange(this)">
“onchange”而不是“ng change”,因为它看起来不支持在文件上载输入控件上绑定带有ng change的内容


这几乎是从一位同事的密码中一字不差地偷走的。它可能是特定于铬的。如果认识我的人看到了这一点,所有的功劳都归于这位同事。无论如何,这都要归功于他

到目前为止你试过什么吗?您是否有任何涉及JSON文件导入的代码,并且您只是在寻找将该文件解析为范围变量的帮助?因为你似乎把事情安排得很好,所以我不知道你在找什么。在本例中,该文件不会通过web传输,也不会存储在任何位置。正确。输入类型文件不支持ngModel。如果您碰巧在Angular中关闭了调试信息(请参阅),则onchange请求中的“.scope()”将无法工作。但似乎很少有人这样做(在我们的应用程序中,我们看到性能几乎没有变化,这只会使动态调试变得更加困难——所以我们将其保留在打开状态)。
$scope.onFileChange = function (fileEl) {
  var files = fileEl.files;
  var file = files[0];
  var reader = new FileReader();

  reader.onloadend = function(evt) {
    if (evt.target.readyState === FileReader.DONE) {
      $scope.$apply(function () {
        $scope.something = JSON.parse(evt.target.result);
      });
    }
  };

  reader.readAsText(file);
};