Angular——一个等号引发的坑

前端之家收集整理的这篇文章主要介绍了Angular——一个等号引发的坑前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正文

  写这篇博客时我特别赞同一句话——这世间无奇不有,没有见不到的只有想不到的。
  这两天在利用集合获取我想要的数据时,因为一个等号让接收到的数据集合发生了意想不到的变化,虽然我找到了界面出错的原因是数据不对,也知道哪块错了,但是我开始的关注点却放错了位,太过好奇却没有试的再多一点想的再全面一点,怎么也没想到一切都是因为一个“=”引起的。
  下面小菜就先简单展示一下奇异的数据变化和变化的起因。



◆奇异的数据变化

  这些也是我在做排课时遇到的问题,当我点击表格进行排课前要先判断一下选择的教室的容量够不够
1.代码

//表格的点击事件:点击表格排课之前先判断容量是否足够大
td_click(id: any) {
  //在console中输出roomOptions集合
  console.log("-------------------------测试roomOptions-----------------");
  console.log(this.roomOptions);
  //从教室集合roomOptions找到下拉框选择的这个教室对应的一整条数据
  let roomdata = this.roomOptions.find(x => x.id = this.roomId);
  //在console中输出找到的那条数据
  console.log("-------------------------测试roomdata-----------------");
  console.log(roomdata);
 //用获取到的这条数据中的容量与现在需要的容量进行比较
  if (roomdata.roomCapacity < this.arrangecourse.teachclassEntity.capacity) {
      this.showDialog("教室容量不足,建议选择其他教室");
      return;
  }
 }

2.选择教室下来框中的第一个教室

◇点击表格时获取到的数据集合(一切正常)

◇根据第一个教室的id(FrVnuqiYCYb6gayrK51C7d)find到的数据(一切正常)

3.选择下拉框中第二个教室

◇再次点击表格时获取到的数据集合(异常:l两条数据的id变成了第二个教室的id(Ud7vPUjSsnAsQkE2mUEXd7)但两条数据的其他字段都没变)

◇根据第二个教室的id(Ud7vPUjSsnAsQkE2mUEXd7)find到的数据(异常:找到的是第一个教室对应的数据))






◆数据变化的原因

  我使用集合的find时用错了等号,我需要的是比较(==)可我却用的是赋值(=)

//表格的点击事件:点击表格排课之前先判断容量是否足够大
td_click(id: any) {
  //在console中输出roomOptions集合
  console.log("-------------------------测试roomOptions-----------------");
  console.log(this.roomOptions);
  //从教室集合roomOptions找到下拉框选择的这个教室对应的一整条数据
  let roomdata = this.roomOptions.find(x => x.id == this.roomId);
  //在console中输出找到的那条数据
  console.log("-------------------------测试roomdata-----------------");
  console.log(roomdata);
 //用获取到的这条数据中的容量与现在需要的容量进行比较
  if (roomdata.roomCapacity < this.arrangecourse.teachclassEntity.capacity) {
      this.showDialog("教室容量不足,建议选择其他教室");
      return;
  }
 }




◆JavaScript中的等号

◇一个等号(=)
  表示:赋值


◇两个个等号(==)
  表示:equality 等同的意思,使用“==”,如果两边值的类型不同的时候,是要先先进行类型转换后,才能做比较。


◇三个等号(===)
  表示:identity 恒等的意思,使用”===”时,是不需要做类型转换的,如果两边值的类型不同,就表示一定是不等的。


◇辅助理解的链接分享
JavaScript里面三个等号和两个等号的区别
JavaScript NaN 属性

小结

  嘿嘿,刚开始对小菜来说奇异的变化现在已经说完了,所以以后要多注意细节哦,出现问题一定要静下心来找到出现问题的原因,然后考虑问题要全面一些!

猜你在找的Angularjs相关文章