上传带有 Angular 材质和 Angular JS 的文件

2023-12-02

对于代码,我从中得到了灵感:

https://codepen.io/alexandergaziev/pen/JdVQQm

所以,对于 HTML,我这样做了:

 <div class="file_input_div">
    <div class="file_input">
      <label class="image_input_button mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-js-ripple-effect mdl-button--colored">
        <i class="material-icons">file_upload</i>
        <input id="file_input_file" class="none" type="file"
               ng-model="file1"
               onchange="angular.element(this).scope().changeInputText(this);
                         angular.element(this).scope().changeState();"/>
      </label>
    </div>
    <div id="file_input_text_div" class="mdl-textfield mdl-js-textfield textfield-demo"
          ng-model="filetextdiv">
      <input class="file_input_text mdl-textfield__input"
             type="text" disabled readonly id="file_input_text"
             ng-model="filetext" />
      <label class="mdl-textfield__label" for="file_input_text">
      </label>
    </div>
  </div>

并在相应的控制器中:

 $scope.changeInputText = function(){
    console.log($scope.file1);
    console.log($scope.filetext);
    console.log($scope.filetextdiv);
    var str = $scope.file1.value;
    var i;

    if (str.lastIndexOf('\\')) 
    {
      i = str.lastIndexOf('\\') + 1;
    } 
    else if (str.lastIndexOf('/')) 
    {
      i = str.lastIndexOf('/') + 1;
    }

    $scope.filetext.value = str.slice(i, str.length);

  };

  $scope.changeState = function() {

    console.log("Coucou");
    if ($scope.filetext.value.length != 0) 
    {
      if (!$scope.filetextdiv.classList.contains("is-focused")) 
      {
        $scope.filetextdiv.classList.add('is-focused');
      }
    } 
    else 
    {
      if ($scope.filetextdiv.classList.contains("is-focused")) 
      {
        $scope.filetextdiv.classList.remove('is-focused');
      }
    }
  }

但有一个问题,我不明白为什么:

当我选择一个文件时,控制器中的函数就会被调用。

但是,该值(由 ng-model、file1、filetext 和 filetextdiv 设计)未定义。

Why ?


启用指令ng-model with input type=file

app.directive('fileModel', function () {
    return {
        restrict: 'A',
        require: "ngModel",
        link: function(scope, elem, attrs, ngModel) {
            elem.on('change', function(e){
                ngModel.$setViewValue(elem[0].files);
            });
        }
    };
});

Usage

<input type="file" ng-model="vm.files" file-model />

如何使用 $http 服务发布文件

对文件进行 POST 时,设置内容类型标头 to undefined.

var config = { headers: {
               "Content-Type": undefined,
              }
           };

$http.post(url, vm.files[0], config)
  .then(function(response) {
    vm.result = "SUCCESS";
}).catch(function(response) {
    vm.result = "ERROR "+response.status;
});

默认情况下,AngularJS 框架使用内容类型application/json。通过设置Content-Type: undefined,AngularJS 框架省略了内容类型标头,允许XHR API设置内容类型。

有关更多信息,请参阅MDN Web API 参考 - XHR 发送方法


但是,该值(由 ng-model、file1、filetext 和 filetextdiv 设计)未定义。

Why ?

Why is file1不明确的?核心ng-model指令不适用于以下输入type=file

Note:并非所提供的所有功能都适用于所有输入类型。具体来说,数据绑定和事件处理通过ng-model不支持input[file].

— AngularJS 输入指令 API 参考

Why is filetext不明确的?输入被禁用。

 <input class="file_input_text mdl-textfield__input"
        type="text" disabled readonly id="file_input_text"
        ng-model="filetext" />

Why is filetextdiv不明确的?这ng-model指令不适用于<div>元素。

<div id="file_input_text_div" class="mdl-textfield mdl-js-textfield textfield-demo"
     ng-model="filetextdiv">

这是否回答你的问题?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传带有 Angular 材质和 Angular JS 的文件 的相关文章

  • 使用最新的不稳定分支生成 Angularjs 应用程序?

    刚开始使用 Yeoman 并喜欢它 但是 我正在构建一个依赖于一些 Angular 1 1 x 功能的应用程序 ng trim and ng animate 并且 Angular generator 使用最新的稳定分支作为默认分支 但不包含
  • Material Design布局_scrollFlags含义

    我发现我们可以使用很酷的标志来滚动工具栏甚至内容layout scrollFlags 就我而言 我有这样的布局
  • cordova.js 导致引用错误“未定义需求”

    我想用恩科尔多瓦检测设备的网络状态 然而 一旦我包括科尔多瓦 js我收到一个错误 未捕获的引用错误 未定义 require cordova js 23 我已经安装并成功运行Node js and Cordova 我已经下载并安装了恩科尔多瓦
  • 为什么在这个函数定义中像这样使用“window.angular”?

    我正在尝试理解一个我需要用来与 Django 集成的 angularjs 文件 它有一个我不熟悉的奇怪语法 请记住我是一名初级开发人员 所以这可能是你的面包和黄油 它是这样的 function angular undefined use s
  • 文本输入框作为 SVG 中的“foreignObject” - 文本溢出问题

    我使用 foreignObject 标签在 svg 中有一个文本输入框 这很有效 但是如果您在输入框中输入的内容比其宽度长 从而导致其溢出 那么文本实际上会出现在页面上的其他位置 可能是没有外来对象标记的默认位置 这是一些屏幕截图来解释正在
  • 在 History popstate 事件中获取 AngularJs $scope?

    我是 angularjs 开发新手 我有 var app angular module myapp app controller ProductCtrl scope sce function scope sce scope products
  • AngularJs 数据绑定不适用于 ionic

    我觉得我在离子输入文本中遗漏了一些明显的东西 我在用angular ui router这条路线 stateProvider state findPersons url findPersons templateUrl html findPer
  • .bat 文件将文件排序到文件夹中

    对于我的图片集 我希望文件夹中的所有图片按日期自动分类到文件夹中 幸运的是 这些文件已经以时间戳命名 2012 07 15 12 21 06 jpg 2012 07 15 12 21 26 jpg 2012 07 16 12 12 50 j
  • 禁用输入中的空格,并允许后退箭头?

    我试图禁用用户名文本字段中的空格 但是我的代码也禁用后退箭头 有什么办法也允许后退箭头吗 function var txt input UserName var func function txt val txt val replace s
  • Angularjs 手表服务对象

    为什么我无法观看服务中的对象 我有一个简单的变量可以工作 但是一个对象不能工作 http plnkr co edit S4b2g3baS7dwQt3t8XEK p preview http plnkr co edit S4b2g3baS7d
  • 包含routeChangeSuccess的AngularJS测试控制器

    我正在尝试创建单元测试来测试导航列表控制器 但在创建测试时遇到问题 这是控制器的代码 navListModule controller NavListCtrl scope NavList function scope NavList sco
  • 如何在angularjs中使用addClass方法

    我有一个仅限于类的 angularjs 指令 如何使用 angularjs 中的 addClass 方法添加它 指示 app directive number function return restrict C link function
  • 如何销毁角度工厂实例

    一方面 我有几个工厂 每个工厂都控制一个 websocket 另一方面 其中一个工厂应该在客户端登录时启动 因此 if user isLogged injector get NotificationsWebsocket 这就是我动态初始化工
  • 用 while 循环打开文件 - C [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 各位程序员大家好 我的问题不大 我不知道如何打开具有不同数字 在文件名中 的文件 从 1 到存在的任意数量的文件 例如 我有两个 或最
  • 在 Angular e2e 测试中获取浏览器路径会导致异常

    我有一个简单的 e2e 测试来验证路由重定向是否有效 跑步者 html 场景 js use strict describe e2e function beforeE
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • JavaFX ImageView 未更新

    因此 我尝试将图像加载并保存到 imageView 中 其中图像的位置是通过文件浏览器选择的 我已经为此工作好几天了 如果我不能解决这个问题 我就会中风 我已经尝试了我能想到的一切 预先感谢您的帮助 UPDATED 这是我的主要课程 pub
  • 用户脚本 - 有没有办法将 jquery 代码注入 angularjs dom?

    所以我正在尝试为一个网站创建用户脚本 我无法更改网站的任何源代码 因为它不是我的 网站到处都使用 AngularJS 控制器 我研究了几天如何做到这一点 但没有成功 所以我尝试注入代码 nav after div test div 当我通过
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 如何在 angular-ui 中动态禁用 ui-sortable 指令

    我正在使用 Angular ui 使用 ui sortable 指令进行排序 是否可以根据范围状态动态启用 禁用可排序功能 因此 我需要一个按钮来更改范围属性的状态 并且根据此属性可排序是否应该工作 角度指令支持观察可排序选项何时发生变化

随机推荐

  • 使用 PDFBox 将 UTF-8 编码字符串写入 PDF [重复]

    这个问题在这里已经有答案了 我在使用 PDFBox 将 unicode 字符写入 PDF 时遇到问题 下面是一些生成垃圾字符而不是输出 的示例代码 我可以添加什么来获得对 UTF 8 字符串的支持 PDDocument document n
  • 当产品价格为零时隐藏“添加到购物车”按钮

    我有一个基于活动的 WordPress 网站 我在该网站上使用 WooCommerce 出售门票 有没有办法隐藏零成本产品的 添加到购物车 按钮 Thanks 您在主题中编写此代码function php function remove a
  • 您可以在 makefile 中执行 $(wildcard %/**/*.c) 吗?

    作为后续这个问题 还有一个情况我在几个小时的修修补补中还没有弄清楚 这是 makefile 当前的样子 output shell find lib type f name build js or name build css myth no
  • Bare-Except 不受欢迎的任何原因

    在某种程度上 我想知道为什么在 Python 中使用裸异常会如此令人不悦 如果我有一个完整的程序正在运行并且我做了类似的事情 我就会明白 import sys from application import program try prog
  • 如何在 CSS3 中为元素设置摆动动画?

    自从我看到国库网站还有树上摆动的标志效果 我一直在尝试重现 box width 50px height 50px background blue box shadow 0 0 5px blue margin 100px float left
  • 无法在 AVAudioplayer 中实施前向操作

    我正在使用 AVAudioplayer 播放一些音频文件 我有一些控件 例如前进和后退 倒带工作正常 但前进则不然 void rewind AVAudioPlayer player rewTimer userInfo player curr
  • 使用 python sdk 在 azure 中的 Linux 虚拟机中运行命令

    我发现azure python sdk提供了以下在linux虚拟机中运行命令的方法 from azure mgmt compute import compute management client from azure common cre
  • Android:使用默认音乐播放器播放歌曲文件

    有没有办法使用默认媒体播放器播放媒体 我可以使用以下代码来做到这一点 Intent intent new Intent Intent ACTION VIEW MimeTypeMap mime MimeTypeMap getSingleton
  • char 和 unsigned char 有什么区别?

    已编辑将 C C 更改为 C 请帮我找到一个明确的澄清char and unsigned char特别是当我们在嵌入式设备和普通PC之间传输数据时 缓冲区和普通PC之间的区别 unsigned char和朴素的char 您问的是两种不同的语
  • linux下Java RandomAccessFile.java无法正常工作

    我试图在java中实现简单的tail f linux命令 这是我的代码 try position within the file File file new File home curuk monitored log txt RandomA
  • 如何使用 django-simple-history 存储 ManyToManyField 的历史记录。

    如何使用 django simple history 存储 ManyToManyField 的历史记录 我使用带有属性 m2m filds 的 HistoricalRecords 但它抛出错误 意外的关键字参数 m2m fields 我是
  • 增强 ggvis 轴

    我正在寻找增强图表的最佳方法 library dplyr library ggvis df lt data frame Year c 1954 2013 Count rep as integer c 1 3 4 2 15 df gt ggv
  • 使用 AppleScript 将 .rtf 文本复制到电子邮件正文中

    我有一个 AppleScript 应用程序 它可以创建一封电子邮件 在 Mail app 中 其中包含我通过对话框选择的选项中的附件 文本模板存储在 rtf格式 以便非程序员可以根据自己的意愿更改文本模板 我可以从以下地址创建电子邮件 tx
  • C++ 中并行向量的 find_first

    我有一个相当大的向量 一些向量成员并行地匹配某个条件 我想找到与条件匹配的第一个元素 我的问题与这个问题非常相似 tbb 并行查找第一个元素 但我没有tbb 检查条件非常繁琐 所以我无法依次对所有条件进行检查 这就是为什么我想并行运行它 我
  • php - 如何合并每个数组具有不同元素数的二维数组

    我有 2 组二维数组 我想合并成 1 个二维数组 但每个数组中的元素数量不相同 并且前 2 个元素相同 我不想重复它 这是它 第一个二维数组 Array 0 gt Array 0 gt 25 2 2013 1 gt 8 45 a m 2 g
  • Model View ViewModel / Knockout 解决什么问题? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我在阅读某人的代码时遇到了 Knockout 和 MVVM 我对这两个主题都做了一些阅读 但我仍然对它们真正解决的问题感到困惑 很可能是因为我还没有构建足够大的应用程序来解决这个
  • 导入错误:没有名为 pandas 的模块

    我正在尝试用 Python 编写代码来获取 Twitter 数据 但没有收到 twython 错误 但我遇到了 Pandas 错误 我已经使用安装了 Pandaspip install pandas 但我仍然收到以下错误 我该如何修复它 F
  • ANTLR4 解析树简化

    有没有办法让 ANTLR4 自动删除生成的解析树中的冗余节点 更具体地说 我一直在尝试 GLSL 的语法 由于自动处理运算符优先级所需的规则转发 您最终会在解析树中得到长线性 表达式 序列 大多数生成的树节点只是 转发到下一个优先级 因此不
  • 如何更改图例的顺序

    我想改变图例的顺序 见图 我希望序列是 绿色和data2 蓝色和data3 黑色和data4 红色和data1 有人能给个demo吗 更改将图添加到图中的顺序 然后调用legend通常情况下 应该可以做到这一点 您也可以按如下方式进行 首先
  • 上传带有 Angular 材质和 Angular JS 的文件

    对于代码 我从中得到了灵感 https codepen io alexandergaziev pen JdVQQm 所以 对于 HTML 我这样做了 div class file input div div class file input