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 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
分析 JavaScript 中令人困惑的变量赋值
Aug 13 Javascript
javascript 网页跳转的方法
Dec 24 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
jquery实现图片滚动效果的简单实例
Nov 23 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
vue写h5页面的方法总结
Feb 12 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
vue使用element-ui按需引入
May 20 Vue.js
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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
js 调用百度分享功能
2017/02/27 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python获取任意xml节点值的方法
2015/05/05 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
自学python的建议和周期预算
2019/01/30 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
大学新生军训自我鉴定
2014/03/18 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
校园广播站开场白
2015/06/01 职场文书