【曹操】 angular js双向绑定数据通过bootstrap请求获取不到表单数据

简介: 在做项目的时候,在VidyoCallFlowEntry页面中,通过name字段双击跳转弹出VidyoCallFlow页面,同时传入name的值作为参数进行查询,并展示查询结果。但在路由中获取到name的值,通过angular js双向绑定的方式赋值给VidyoCallFlow页面的vidyoname的值,发现并没有查询到结果,但是根据该name的值在数据库中查询,是有结果的。
1、查看代码逻辑
controller的请求代码:
      //跳转vidyoname初始化table
       var name = $routeParams.name;  //路由中获取到传入的name值
       if(name) {  //如果name变量有值
           console.log("name:"+name);  //打印name变量
           $scope.flag = false;  
           $scope.vidyocallflow.vidyoname = name;  //动态绑定将name变量的值赋给作用域集合中vidyoname元素
           
           console.log("vidyocallflow.vidyoname="+$scope.vidyocallflow.vidyoname);  //打印作用域集合中vidyoname元素
           console.log($scope.vidyocallflow);  //打印作用域集合
           console.log($('#vidyoCallFlowForm'));  //打印表单
       btTable.searchDate('vidyoCallFlowForm','/ccao/media/vidyocallflow/query.do');  //通过bootstrap自带的请求searchDate方法将url和表单作为参数,请求到后台。
       }
btTable.searchDate方法:
    //formId 搜索数据的表单;为空时,传NULL
    bootObject.searchDate = function(formId,url) {
        console.info('url:'+url);
        var searchData;
        if(formId==null){
            searchData=null;
        }else{
            searchData = $('#' + formId + '').serialize();  //通过上传的表单id获取表单中的所有值
        }
        var tmp = '?';
        /*if(url.contain('?')|| url.contain("&")){
            tmp = '';
        }*/
        $('#' + tableId + '').bootstrapTable('refresh', {
            url : '' + url + tmp + searchData,
        })  //bootstrap表格自带请求并填充表格的方法
    };

2、通过日志打印,发现绑定的作用域集合vidyoname有值,且作用域集合和表单打印出来,其中的vidyoname都有值,在弹出的VidyoCallFlow页面的name的input框中也有数据填充,说明双向绑定赋值是成功的,但是在使用 btTable.searchDate方法,传入表单名和url时,查询不到结果,且发现请求到后台的url为:"url:/ccao/media/vidyocallflow/query.do?vidyoname=",参数vidyoname没有值带入,通过后台日志发现确实该请求没有参数传到后台,也说明了在使用bootstrap自带请求方法时,没有从表单中获取到vidyoname的值,因此请求没有携带该参数的值。

3、但是再次通过点击VidyoCallFlow页面的搜索按钮时,触发页面的点击事件,该事件执行的请求方法与跳转请求的方法相同,同为bootstrap自带的请求方法,但是传入后台参数有值,且查询有结果。

4、原因:在路由跳转双向绑定数据时,存在通过jquery获取不到表单中元素的值的问题,后采用jquery赋值的方法替代将双向绑定的方法:
       //跳转vidyoname初始化table
       var name = $routeParams.name;
       if(name) {
           console.log("name:"+name);
           $scope.flag = false;
           $('#vidyoname').val(name);  //jquery赋值
           
       btTable.searchDate('vidyoCallFlowForm','/ccao/media/vidyocallflow/query.do');       

}

5、查询成功,跳转获取到页面查询结果。
目录
相关文章
|
5月前
|
JavaScript 前端开发 开发者
Nest.js控制器深度解析:路由与请求处理的高级特性
以上就是对 NestJS 控制层高级特性深度解析:从基本概念到异步支持再到更复杂场景下拦截其与管道等功能性组件运用都有所涉及,希望能够帮助开发者更好地理解和运用 NestJS 进行高效开发工作。
410 15
|
8月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
778 65
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
579 96
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 API
Vue.js与Angular的优劣分析
Vue.js和Angular都是非常流行的JavaScript框架,它们在构建现代Web应用程序方面各有优劣
405 64
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
211 2
Node.js GET/POST请求
ractive.js联系表单动画效果源码
一款ractive.js联系表单动画效果,很有创意的发送邮件、联系内容等表单,基于ractive.js实现的动画效果,以发送信件的方式。
139 1
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
294 3
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
577 1
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
500 1