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 相关文章推荐
javascript for循环设法提高性能
Feb 24 Javascript
js下用eval生成JSON对象
Sep 17 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
angular中的http拦截器Interceptors的实现
Feb 21 Javascript
js获取ip和地区
Mar 10 Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 Javascript
javascript跳转与返回和刷新页面的实例代码
Nov 20 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 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
我的论坛源代码(三)
2006/10/09 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
利用python实现周期财务统计可视化
2019/08/25 Python
Python基于WordCloud制作词云图
2019/11/29 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Python matplotlib实时画图案例
2020/04/23 Python
python 贪心算法的实现
2020/09/18 Python
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
门卫岗位安全职责
2013/12/13 职场文书
高一家长会邀请函
2014/01/12 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
《满井游记》教学反思
2014/02/26 职场文书
个人委托书范本
2014/09/13 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
Elasticsearch 配置详解
2022/04/19 Java/Android