AngularJS实现动态添加Option的方法


Posted in Javascript onMay 17, 2017

本文实例讲述了AngularJS实现动态添加Option的方法。分享给大家供大家参考,具体如下:

项目中后台管理设置,前台下拉动态添加option

<!DOCTYPE html>
<html lang="zh-CN">
 <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="bootstrap.min.css" rel="external nofollow" >
  <script src="jQuery.min.js"></script>
  <script src="angular.js"></script>
  <script src="angular-animate.js"></script>
  <script src="bootstrap.min.js"></script>
  <script type="text/JavaScript">
    var app = angular.module('myapp', []);
    app.controller('DemoCtrl', function ($scope) {
      $scope.optionContainer = [];
      var realOptions = [];
      var randomCode = function() {
        var chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKMNOPQRSTUVWXYZ1234567890";
        var randomChars = "";
        for (var i = 0; i < 10; i++) {
          var index = Math.floor(Math.random() * chars.length);
          randomChars = randomChars + chars.charAt(i);
        }
        return randomChars;
      }
      var getIndex = function(array, id) {
        var tmpItem = {};
        angular.forEach(array, function(item) {
          if (item.id == id) {
            tmpItem = item;
          }
        });
        return array.indexOf(tmpItem);
      }
      $scope.add = function() {
        var optionIndex = randomCode();
        $scope.optionContainer.push({
         id : optionIndex,
         readOnly : false,
         content : '',
         showConfirm : true
        })
        console.log($scope.optionContainer)
      }
      $scope.confirm = function(content, id) {
        if (content == '') {
          return;
        }
        var flag = false;
        angular.forEach(realOptions, function(item) {
          if (item == content) {
            flag = true;
          }
        });
        if (flag) {
          console.log('already exist!');
          return;
        }
        var tmpIdIndex = getIndex($scope.optionContainer, id);
        realOptions.push(content);
        $scope.optionContainer[tmpIdIndex].showConfirm = false;
        $scope.optionContainer[tmpIdIndex].readOnly = true;
      }
      $scope.deleteFunc = function(id) {
        var tmpIdIndex = getIndex($scope.optionContainer, id);
        if ($scope.optionContainer[tmpIdIndex].showConfirm == false) {
          tmpIndex = realOptions.indexOf($scope.optionContainer[tmpIdIndex].content);
          realOptions.splice(tmpIndex, 1);
        }
        $scope.optionContainer.splice(tmpIdIndex, 1);
      }
    });
  </script>
 </head>
 <body ng-app="myapp">
  <div ng-controller="DemoCtrl">
    <div>
      <div class="Container">
       <h1>create options</h1>
      </div>
      <div>
        <div>
          <table class="table table-striped table-hover">
            <thead>
              <tr>
                <th>option</th>
              </tr>
            </thead>
            <tbody>
             <tr ng-repeat="item in optionContainer" class="row">
               <td class="col-md-8" style="width:100%;">
               <input type="text" ng-model="item.content" ng-readonly="item.readOnly"/></td>
               <td class="col-md-2">
                <button type="button" class="btn btn-success btn-xs" ng-click="confirm(item.content, item.id)" ng-show="item.showConfirm">Confirm
                </button>
               </td>
               <td class="col-md-2">
                <button type="button" class="btn btn-success btn-xs" ng-click="deleteFunc(item.id)">Delete
                </button>
               </td>
             </tr>
            </tbody>
          </table>
        </div>
        <a class="btn btn-success btn-xs" ng-click="add()">Add</a>
      </div>
    </div>
  </div>
 </body>
</html>

运行效果图如下:

AngularJS实现动态添加Option的方法

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
Div自动滚动到末尾的代码
Oct 26 Javascript
event.srcElement 用法笔记e.target
Dec 18 Javascript
利用JS实现浏览器的title闪烁
Jul 08 Javascript
javascript中数组中求最大值示例代码
Dec 18 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
Dec 29 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 #Javascript
Vue声明式渲染详解
May 17 #Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 #Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 #Javascript
AngularJS实现的回到顶部指令功能实例
May 17 #Javascript
bootstrap模态框示例代码分享
May 17 #Javascript
ES6入门教程之let和const命令详解
May 17 #Javascript
You might like
基于mysql的论坛(5)
2006/10/09 PHP
php adodb连接不同数据库
2009/03/19 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
React学习笔记之事件处理(二)
2017/07/02 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
详解Vite的新体验
2021/02/22 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
某某同志考察材料
2014/05/28 职场文书
司法所长先进事迹
2014/06/02 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
小学远程教育工作总结
2015/08/13 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
python基础之文件处理知识总结
2021/05/23 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis