网站开发进阶(二十一)Angular项目信息错位显示问题解决

时间:2022-03-02 03:22:46

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项目信息错位显示问题解决的更多相关文章

  1. 网站开发进阶(二十五)js如何将html表格导出为excel文件

    js如何将html表格导出为excel文件        赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉! jsp页面数据导出成excel的方法很 ...

  2. 网站开发进阶(二十六)js刷新页面方法大全

    js刷新页面方法大全 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有 ...

  3. 网站开发进阶(三十一)js如何将html表格导出为excel文件(后记)

    js如何将html表格导出为excel文件(后记) 前言 项目前期做了个导出Excel表格的功能,但是经过测试发现只有在IE上才可以正确实现,在Chrome等浏览器中无法实现导出效果.经过上网搜索,尝 ...

  4. 网站开发进阶(二十八)初探localStorage

    初探localStorage       注: localStorage经典项目应用案例 HTML5中提供了localStorage对象可以将数据长期保存在客户端,直到人为清除. localStora ...

  5. arcgis api 3.x for js 入门开发系列二十一气泡窗口信息动态配置模板

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. 网站开发进阶(二十九)HTML特殊转义字符

    HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图

  7. 网站开发进阶(二十四)HTML颜色代码表

    HTML颜色代码表 设置背景色:style='background-color:red' 设置字体颜色:style='color:red' 生活在于学习,知识在于积累.

  8. 网站开发进阶(二十三)Address already in use: JVM_Bind <null>:8088

    Address already in use: JVM_Bind <null>:8088 注:请点击此处进行充电! 阿里云服务器又莫名其妙的宕掉!内存泄漏问题依然存在,又出现了端口占用的情 ...

  9. 网站开发进阶&lpar;二十二&rpar;HTML UI知识汇总&lpar;更新中&period;&period;&period;&rpar;

    HTML知识汇总(更新中...) 1.<iframe> 标签 浏览器支持 所有浏览器都支持 <iframe> 标签. 定义和用法 iframe 元素会创建包含另外一个文档的内联 ...

随机推荐

  1. hiho一下123周 后缀数组四&&num;183&semi;重复旋律

    后缀数组四·重复旋律4 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...

  2. 烂泥:使KVM显示VM的IP地址及主机名

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. KVM虚拟化学习已经有一段时间了,现在虚拟化软件比较多,对比了下目前使用比较多的VMware Vsphere.发现在不进入VM系统的情况下,Vspher ...

  3. Linux中获取本机网络信息的几个函数及应用

    一.读取/etc/hosts 几个函数 头文件<netdb.h> 1.void sethostent(int stayopen);//开打/etc/hosts 配置文件 2.struct ...

  4. 向Array中添加选择排序

    选择排序思路 在无序区中选出最小的元素,然后将它和有序区的第一个元素交换位置. 选择排序实现 Function.prototype.method = function(name, func){ thi ...

  5. Python 统计代码行

    正在学习 Python, 做了个统计代码行的功能, 参考了网上很多前辈的帖子,添加了感觉还是比较实用的功能, 只是windows下测试了,而且代码文件编码形式是 utf-8的. 如果使用其它编码形式的 ...

  6. 《大话设计模式》c&plus;&plus;实现 工厂模式

    工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端 ...

  7. Regionserver启动后又关闭

    今天启动hbase shell,输入hbase命令时报错: ERROR [regionserver/regionserver1/172.18.0.61:16020] reggionserver.HRe ...

  8. HashMap源码翻译

    /* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...

  9. 离线安装eclipse的maven插件包

    离线安装eclipse的maven插件包 1.打开你本地的eclipse根目录,随便新建一个文件夹例如mavenPlugin,把maven离线插件包中两个文件夹复制到这个新建的这个文件夹里边 2.找到 ...

  10. windows 下进程与线程的遍历

    原文:http://www.cnblogs.com/Apersia/p/6579376.html 在Windows下进程与线程的遍历有好几种方法. 进程与线程的遍历可以使用<TlHelp.h&g ...