AngularJS - 保留文件,即使它是通过ng-if隐藏的

时间:2014-02-27 21:58:54

标签: javascript jquery angularjs

我有一个可以隐藏或显示一些div的小脚本。每个div都包含一个文件输入。

我的问题是,当隐藏div时,所选文件消失了,为什么会这样?

以下是一个示例(http://jsfiddle.net/etiennenoel/8k4M7/):

<!DOCTYPE html>
<html ng-app>

  <head>
    <script data-require="angular.js@*" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Hello Plunker!</h1>


    <div ng-if="test == true">
      <input type="file">
    </div>
    <button ng-click="test = !test">test</button>

  </body>

</html>

首先,您必须单击测试按钮。

其次,您选择一个文件。

第三,你点击两次测试按钮。

您会看到所选文件现已消失,为什么?我真的必须为此创建一个指令吗?这意味着我会将文件保存在某处?

1 个答案:

答案 0 :(得分:4)

所选文件已消失,因为如果ng-if的条件求值为false,则该元素的所有内容都将从DOM中删除。当条件为true时,内容将重新插入,因此会丢失其先前的状态。

您可以使用ng-show。它不会从DOM中删除内容。

这是小提琴: http://jsfiddle.net/3fgLx/