Angular项目信息错位显示问题解决
绪
最近在项目开发过程中遇到这样一个棘手的问题:查询出所有订单信息后,点击选择某一个订单,查询出的结果是上一次查询所得的结果。而且会出现点击两次才可以显示订单详情的问题。
通过Chrome进行代码调试,发现事件执行次序与自己的点击事件次序存在不一致的情况。
相关代码:
doSearch(); //查询收货人基本信息 var modalInstance = $modal.open({ // 开始执行控制器BillDtlPopCtrl templateUrl: 'billDtlContent.html', // 模态窗口的地址,指向创建的视图 controller: 'BillDtlPopCtrl', // 初始化模态范围,为$modal指定的控制器,初始化$scope,该控制器可用$modalInstance注入 size: size, resolve: { // 定义一个成员并将他传递给$modal指定的控制器,相当于routes的一个reslove属性,如果需要传递一个objec对象,需要使用angular.copy() items: function () { return $scope.items; } } }); doSearch()方法体如下: var doSearch = function(){ console.log("doSearching..."); /** * 此处存在问题,在输出"doSearching..."后,直接进入BillDtlPopCtrl中,在执行完其中的方法后才执行了下面的方法。困惑! */ try{ //此交易用于药店查询自己的订单 appCallServer($http,"S007",{ "billid":billid }, function(data){ console.log("queryData_Sunny1989:"); //success function console.log(data); instance.data = data; instance.billid = billid; instance.queryData = data; //$cookieStore.put("data_SHQ",data); },function(data){ alert("未找到记录:"+data.errtext); }); }catch(error){ alert("S007:"+error.message); }finally{ //脏值检查,无效果 //$scope.$apply(); } };
doSearch(); //查询收货人基本信息 var modalInstance = $modal.open({ // 开始执行控制器BillDtlPopCtrl templateUrl: 'billDtlContent.html', // 模态窗口的地址,指向创建的视图 controller: 'BillDtlPopCtrl', // 初始化模态范围,为$modal指定的控制器,初始化$scope,该控制器可用$modalInstance注入 size: size, resolve: { // 定义一个成员并将他传递给$modal指定的控制器,相当于routes的一个reslove属性,如果需要传递一个objec对象,需要使用angular.copy() items: function () { return $scope.items; } } });
doSearch()方法体如下:
var doSearch = function(){ console.log("doSearching..."); /** * 此处存在问题,在输出"doSearching..."后,直接进入BillDtlPopCtrl中,在执行完其中的方法后才执行了下面的方法。困惑! */ try{ //此交易用于药店查询自己的订单 appCallServer($http,"S007",{ "billid":billid }, function(data){ console.log("queryData_Sunny1989:"); //success function console.log(data); instance.data = data; instance.billid = billid; instance.queryData = data; //$cookieStore.put("data_SHQ",data); },function(data){ alert("未找到记录:"+data.errtext); }); }catch(error){ alert("S007:"+error.message); }finally{ //脏值检查,无效果 //$scope.$apply(); } };
调试
经过对比查看调试信息,发现只有药品信息存在上一次缓存的现象。
另外,将一个search方法写在模态框打开之前,只执行了search方法中的一句输出,后面就接着执行控制器中的方法了?待控制器中的方法执行结束后才继续执行search中的剩余语句,搞不懂啊。
疑惑
难道是异步捣的鬼?(尚未得到解决)
功德圆满
经过网友的一番指教,自己最终将问题解决了。解决方案如下:
将模态弹出框置于doSearch方法体的成功回调内。正确的逻辑思路应是:在药店订单查询S007执行成功后,回调执行模态框弹出。自己的思路还是太窄了,这个点自己怎么就没有想到呢?还是缺少历练。
var doSearch = function(){ console.log("doSearching..."); /** * 此处存在问题,在输出"doSearching..."后,直接进入BillDtlPopCtrl中,在执行完其中的方法后才执行了下面的方法。困惑! */ try{ //此交易用于药店查询自己的订单 appCallServer($http,"S007",{ "billid":billid }, function(data){ console.log("queryData_Sunny1989:"); //success function console.log(data); instance.data = data; instance.billid = billid; instance.queryData = data; // $cookieStore.put("data_SHQ",data); var modalInstance = $modal.open({ // 开始执行控制器BillDtlPopCtrl templateUrl: 'billDtlContent.html', // 模态窗口的地址,指向创建的视图 controller: 'BillDtlPopCtrl', // 初始化模态范围,为$modal指定的控制器,初始化$scope,该控制器可用$modalInstance注入 // size: size, resolve: { // 定义一个成员并将他传递给$modal指定的控制器,相当于routes的一个reslove属性,如果需要传递一个objec对象,需要使用angular.copy() items: function () { return $scope.items; } } }); modalInstance.result.then(function (selectedItem) { $scope.selected = selectedItem; }, function () { $log.info('Modal dismissed at: ' + new Date()); }); },function(data){ alert("未找到记录:"+data.errtext); }); }catch(error){ alert("S007:"+error.message); }finally{ //脏值检查,无效果 //$scope.$apply(); } };
网站开发进阶(二十一)Angular项目信息错位显示问题解决的更多相关文章
-
网站开发进阶(二十五)js如何将html表格导出为excel文件
js如何将html表格导出为excel文件 赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉! jsp页面数据导出成excel的方法很 ...
-
网站开发进阶(二十六)js刷新页面方法大全
js刷新页面方法大全 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有 ...
-
网站开发进阶(三十一)js如何将html表格导出为excel文件(后记)
js如何将html表格导出为excel文件(后记) 前言 项目前期做了个导出Excel表格的功能,但是经过测试发现只有在IE上才可以正确实现,在Chrome等浏览器中无法实现导出效果.经过上网搜索,尝 ...
-
网站开发进阶(二十八)初探localStorage
初探localStorage 注: localStorage经典项目应用案例 HTML5中提供了localStorage对象可以将数据长期保存在客户端,直到人为清除. localStora ...
-
arcgis api 3.x for js 入门开发系列二十一气泡窗口信息动态配置模板
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
-
网站开发进阶(二十九)HTML特殊转义字符
HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图
-
网站开发进阶(二十四)HTML颜色代码表
HTML颜色代码表 设置背景色:style='background-color:red' 设置字体颜色:style='color:red' 生活在于学习,知识在于积累.
-
网站开发进阶(二十三)Address already in use: JVM_Bind <;null>;:8088
Address already in use: JVM_Bind <null>:8088 注:请点击此处进行充电! 阿里云服务器又莫名其妙的宕掉!内存泄漏问题依然存在,又出现了端口占用的情 ...
-
网站开发进阶(二十二)HTML UI知识汇总(更新中...)
HTML知识汇总(更新中...) 1.<iframe> 标签 浏览器支持 所有浏览器都支持 <iframe> 标签. 定义和用法 iframe 元素会创建包含另外一个文档的内联 ...
随机推荐
-
hiho一下123周 后缀数组四&#183;重复旋律
后缀数组四·重复旋律4 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...
-
烂泥:使KVM显示VM的IP地址及主机名
本文由秀依林枫提供友情赞助,首发于烂泥行天下. KVM虚拟化学习已经有一段时间了,现在虚拟化软件比较多,对比了下目前使用比较多的VMware Vsphere.发现在不进入VM系统的情况下,Vspher ...
-
Linux中获取本机网络信息的几个函数及应用
一.读取/etc/hosts 几个函数 头文件<netdb.h> 1.void sethostent(int stayopen);//开打/etc/hosts 配置文件 2.struct ...
-
向Array中添加选择排序
选择排序思路 在无序区中选出最小的元素,然后将它和有序区的第一个元素交换位置. 选择排序实现 Function.prototype.method = function(name, func){ thi ...
-
Python 统计代码行
正在学习 Python, 做了个统计代码行的功能, 参考了网上很多前辈的帖子,添加了感觉还是比较实用的功能, 只是windows下测试了,而且代码文件编码形式是 utf-8的. 如果使用其它编码形式的 ...
-
《大话设计模式》c++实现 工厂模式
工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端 ...
-
Regionserver启动后又关闭
今天启动hbase shell,输入hbase命令时报错: ERROR [regionserver/regionserver1/172.18.0.61:16020] reggionserver.HRe ...
-
HashMap源码翻译
/* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...
-
离线安装eclipse的maven插件包
离线安装eclipse的maven插件包 1.打开你本地的eclipse根目录,随便新建一个文件夹例如mavenPlugin,把maven离线插件包中两个文件夹复制到这个新建的这个文件夹里边 2.找到 ...
-
windows 下进程与线程的遍历
原文:http://www.cnblogs.com/Apersia/p/6579376.html 在Windows下进程与线程的遍历有好几种方法. 进程与线程的遍历可以使用<TlHelp.h&g ...