文章标题 AngularJs 之 模态框

本文介绍如何使用AngularJS中的$modal服务创建模态框,包括依赖模块、模态框创建方式、事件处理等核心内容,并通过具体代码示例详细说明了如何在实际项目中应用这些知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、依赖的模块:$modal、$modalInstance
2、模态框创建:$modal.open(paramObj),传入的参数是一个对象,这个对象有三个重要的属性(templateUrl/template,controller,resolve),分别是模态框需要的模板、控制器以及传递的参数,需要注意的是,如果模态框引用了templateUrl中的html文件,那么这个html文件里不能有ng-controller,因为这option中已经配置了controller,否则会报错,另外一个常用但是非必要的属性为size
3、模态框事件处理:modalInstans.result.then(param1,param2),modalInstans为$modal.open()实例,利用then()方法处理模态框的事件,传递给then()的两个参数都是function,param1处理close event,param2处理dismiss event
4、代码演示

//文件1:admin/teachResearchManage/js/controllerDR.js
//一个按钮的处理函数
$scope.improveInfos = function(data,size){
            //modalInstance 为模态框实例
           var modalInstance = $modal.open({
           //弹框需要的模板文件,也可以用template属性直接给html代码
            templateUrl : 'admin/teachResearchManage/improveInfos.html',
            //此处给了控制器,所以improveInfos.html文件里面不能再有ng-controller,否则控制器就多了,会报错
            controller : 'improveInfosController',
            //常用但非必要的属性
            size : size || 'lg',
            //传递到模态框的参数
            resolve : {
                jsonString :function(){
                    return data;
                },
                host : function(){
                    return $scope.app.host;
                }
            }
        });
        // 处理模态框对应操作的事件
        modalInstance.result.then(function(params) {//处理close event,接收传递的参数:params
            $http.post($scope.app.host+"student/updateStudent?requestId=test123456",params)
                .success(function(data){
                    $scope.getStudentCategoryList($scope.currentPage,10);
                })
        }, function() {//处理dismiss event
            $log.info('Modal dismissed at: ' + new Date());
        });
        //$state.go('app.teachResearchManage.improveInfos',{jsonString:angular.toJson(data)});
    };


//文件2:admin/teachResearchManage/js/controllerLD.js,包含了两个controller
//模态框中resolve传递的参数jsonString,host需要引入
app.controller("infoCtrl",function($scope,$modalInstance,$modal,jsonString,host){
//保存 button
    $scope.saveInfos = function(){
        if(!($scope.selected!=null &&$scope.selected.length>0 && $scope.formData.gradeCode!=null)){
            $scope.warningMessage ='只有一次完善信息的机会,请完善全部信息!';
            return false;
        }else{
            $scope.warningMessage =''
        }
        var params = {
            "code":jsonString.code,//传递的参数jsonString
            "userClassSubject": angular.toJson($scope.selected),
            "accessionYear":$scope.formData.enterShoolYear,
            "year":$scope.formData.gradeCode,
            "completion":2,//已修改
            "teachArea":$scope.corseBookDistrictList[0].name,
            "teachAreaCode":$scope.corseBookDistrictList[0].code
         };
      //模态框中嵌套模态框
        var modalInstance = $modal.open({
            templateUrl:"admin/info.html",
            controller:"infoCtrl",
            size:"md",
            resolve:{
                msg : function(){return "确定保存此次完善的信息吗?"}
            }
        });
        //then(param1,paranm2)第一个参数处理close event,第二个参数处理 dismiss event
        modalInstance.result.then(function(){
            $modalInstance.close(params);//“确定”的时候传递参数:params
        });
    };
    //取消 button
    $scope.cancel = function(){
        $modalInstance.dismiss('cancel');
    };
 };
//teachResearchManage/js/controllerLD.js
//嵌套模态框的controller--infoCtrl以及传递的参数msg
app.controller("infoCtrl",function($scope,$modalInstance,msg){
    $scope.info = msg;
    //确认
    $scope.ok= function () {
        $modalInstance.close();//“确定”的时候没有传递参数
    };
    //取消
    $scope.cancelOpt = function(){
        $modalInstance.dismiss("cancel");//“取消”的时候传递一个取消的原因
    };
});


//文件3: admin/info.html
    <div class="modal-header">
        <h4></h4>
    </div>
    <div class="modal-body">
        <p class="text-center modal-body-content">{{info}}</p>
    </div>
    <div class="modal-footer">
        <button class="btn btn-primary" ng-click="ok()">确定</button>
        <button class="btn btn-default" ng-click="cancelOpt()">取消</button>
    </div>
    <style>
        .modal-body-content{
            font-size: 24px;
        }
    </style>
//文件4: admin/improveInfos.html
<!--ng-controller="improveInfosController"-->
<div class="panel panel-info" >
    <div class="panel-heading">
        <div class="panel-title"><h3>目标分类</h3></div>
    </div>
    <div class="panel-body">
        <div class="col-sm-12 wrapper">
            <form class="form form-horizontal" ng-init="load()">
                <!--公共过滤条件-->
                <div ng-include="'admin/common/tpl/filterImproveData.html'"></div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">入学年份:</label>
                    <div class="col-sm-4">
                        <select ng-model ="formData.enterShoolYear" ng-options="year.yearCode as year.yearName for year in yearList"  class="form-control m-b select-inline">
                            <option value="">--请选择--</option>
                        </select>
                    </div>
                </div>
                <div class="line line-dashed b-b line-lg"></div>
                <div class="form-group">
                    <label class="control-label col-sm-2">地区:</label>
                    <div class="col-sm-4">
                        <!--ng-init="getAllProvinceList()"-->
                        <select ng-model="formData.province" ng-options="pro.provinceCode as  pro.provinceName for pro in provinceList" ng-value="pro.provinceCode" ng-change="getCorseBookDistrict(formData.province)" class="form-control m-b select-inline" >
                            <option value="">--请选择--</option>
                        </select>
                    </div>
                </div>
                <div class="line line-dashed b-b line-lg"></div>
                <div class="form-group" ng-show="teachDistrictFlag">
                    <label class="col-sm-2 control-label">教学大区:</label>
                    <div class="radio">
                        <!--ng-checked="corseBookDistrict.checked"-->
                        <label class="i-checks" ng-repeat="corseBookDistrict in corseBookDistrictList">
                            <input type="radio" name="teachDistrict" ng-value="corseBookDistrict.code" ng-model="formData.corseBookDistrict" ><i></i>{{corseBookDistrict.name}}
                        </label>
                    </div>
                </div>
                <div class="line line-dashed b-b line-lg" ng-show="teachDistrictFlag"></div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">目标类型:</label>
                    <div class="radio">
                        <label class="i-checks" ng-repeat="aim in aimDataList track by $index">
                            <input type="radio" name="aimType" ng-value='aim.aimType' ng-model="formData.aimData"><i></i>{{aim.aimName}}
                        </label>
                    </div>
                </div>
                <div class="line line-dashed b-b line-lg"></div>
                <span style="color:red;">{{warningMessage}}</span>
                <button class="btn btn-default pull-right" style="margin-right: 50px;" ng-click="cancel()">取消</button>
                <button class="btn btn-primary pull-right" style="margin-right: 20px;" ng-click="saveInfos()" ng-disabled="validFlag">保存</button>
            </form>
        </div>
    </div>
   <!-- <div class="panel-footer">
        <button class="btn btn-primary pull-right" style="margin-right: 50px;" ng-click="getList()">关闭</button>
    </div>-->
</div>
### Pandas 文件格式读写操作教程 #### 1. CSV文件的读取与保存 Pandas 提供了 `read_csv` 方法用于从 CSV 文件中加载数据到 DataFrame 中。同样,也可以使用 `to_csv` 将 DataFrame 数据保存为 CSV 文件。 以下是具体的代码示例: ```python import pandas as pd # 读取CSV文件 df = pd.read_csv('file.csv') # 加载本地CSV文件 [^1] # 保存DataFrame为CSV文件 df.to_csv('output.csv', index=False) # 不保存行索引 [^1] ``` --- #### 2. JSON文件的读取与保存 对于JSON格式的数据,Pandas 支持通过 `read_json` 和 `to_json` 进行读取和存储。无论是本地文件还是远程 URL 都支持。 具体实现如下所示: ```python # 读取本地JSON文件 df = pd.read_json('data.json') # 自动解析为DataFrame对象 [^3] # 从URL读取JSON数据 url = 'https://example.com/data.json' df_url = pd.read_json(url) # 直接从网络地址获取数据 # 保存DataFrame为JSON文件 df.to_json('output.json', orient='records') ``` --- #### 3. Excel文件的读取与保存 针对Excel文件操作Pandas 使用 `read_excel` 来读取 `.xls` 或 `.xlsx` 格式的文件,并提供 `to_excel` 方法导出数据至 Excel 表格。 注意:需要安装额外依赖库 `openpyxl` 或 `xlrd` 才能正常运行这些功能。 ```python # 安装必要模块 (如果尚未安装) !pip install openpyxl xlrd # 读取Excel文件 df_excel = pd.read_excel('file.xlsx', sheet_name='Sheet1') # 导出DataFrame为Excel文件 df.to_excel('output.xlsx', sheet_name='Sheet1', index=False) ``` --- #### 4. SQL数据库的交互 当涉及关系型数据库时,Pandas 可借助 SQLAlchemy 库连接各种类型的数据库(如 SQLite, MySQL)。它允许直接查询并将结果作为 DataFrame 返回;或者反过来把现有 DataFrame 插入到指定表中。 下面是基于SQLite的一个例子: ```python from sqlalchemy import create_engine # 创建引擎实例 engine = create_engine('sqlite:///database.db') # 查询SQL语句并返回DataFrame query = "SELECT name, salary, department FROM employees" sql_df = pd.read_sql(query, engine) # 计算各部门平均工资 avg_salary_by_dept = sql_df.groupby('department')['salary'].mean() # 将DataFrame存回SQL表 avg_salary_by_dept.to_sql(name='average_salaries_per_department', con=engine, if_exists='replace', index=True) ``` 上述片段说明了如何执行基本SQL命令以及后续数据分析流程[^4]。 --- #### 5. 多层次索引(MultiIndex)的应用场景 除了常规单维度索引外,在某些复杂情况下可能需要用到多级索引结构。这时可以依靠 MultiIndex 构建更加灵活的数据模型。 例如定义一个多层列名体系: ```python arrays = [['A','A','B','B'], ['foo','bar','foo','bar']] tuples = list(zip(*arrays)) index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) df_multi_indexed = pd.DataFrame([[0,1,2,3], [4,5,6,7]], columns=index) print(df_multi_indexed) ``` 这段脚本演示了怎样构建一个具有双重分类标签的表格布局[^2]。 --- ### 总结 综上所述,Pandas 是一种强大而易用的数据处理工具包,适用于多种常见文件类型之间的相互转换及其高级特性应用开发之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值