找回密码
 立即注册

QQ登录

只需一步,快速开始

ttnkh21

初级会员

51

主题

151

帖子

490

积分

初级会员

积分
490
ttnkh21
初级会员   /  发表于:2021-6-23 08:52  /   查看:4374  /  回复:11

angular11里:这种写法会导致 getItemBySearch  函数重复调用,形成死循环

<wj-auto-complete #theAutoComplete [displayMemberPath]="'staffNumber'" [itemsSource]="waitSelectStaff" [(ngModel)]="cell.value"
                  [itemsSourceFunction]="getItemBySearch.bind(this)"                   (textChanged) = "text($even)"> </wj-auto-complete>



另外:(textChanged) = "text($even)"  这种写法,拿不到变更的值[size=13.0667px]$even是空的
[size=13.0667px]

[size=13.0667px]这个组件有选中后的回调事件吗? 就是我在下拉列表里,选择某项后的事件回调。
[size=13.0667px]selectedIndexChanged() 这个事件似乎是,但在第一次获得焦点时,后自动执行很多次,不知为什么,另外,同上,[size=13.0667px]$even是空的

11 个回复

正序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-29 10:06:16
12#
你好,关于多次查询,是由于
[itemsSourceFunction] ="getItemBySearch.bind(this)"

在 Angular 执行的每个changed检测(发生在具有订阅事件处理程序、http 请求、setTimeout 调用的任何事件上)时,getItemBySearch.bind(this) 调用创建一个新函数,AutoComplete 检测它,并再次调用 itemsSourceFunction。

可以按以下方式设置:

  • 添加 getItemBySearchBnd: any; 字段到宿主元素
  • 在组件构造函数中,将绑定函数分配到此字段中:
    1. this.getItemBySearchBnd = this.getItemBySearch.bind(this);
    复制代码

  • 使用此字段绑定到 itemsSourceFunction:
    1. [itemsSourceFunction] ="getItemBySearchBnd"
    复制代码


另外请注意,当你开始编辑工号列单元格,itemsSourceFunction被调用了两次。这是因为单元格编辑模板检测到不适合单元格高度,并增加网格行高以适应单元格编辑器内容,从而导致网格重新创建编辑器。

如果这不是想要的效果,您可以通过在 grid 'initialized' 事件处理程序中将 grid.rows.defaultSize 设置为更大的高度值来消除它。
下面是修改后的demo

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2021-6-29 08:11:34
11#
Richard.Ma 发表于 2021-6-25 10:44
问题已经重现确认了,目前在和研发同事沟通解决的办法,然后给您回复

您好,问一下,有解决方案了嘛?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-25 10:44:24
10#
问题已经重现确认了,目前在和研发同事沟通解决的办法,然后给您回复
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2021-6-25 09:09:48
9#
Richard.Ma 发表于 2021-6-24 09:15
好的,我验证后给你回复

问一下,验证到了嘛?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-24 09:15:57
8#
好的,我验证后给你回复
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2021-6-23 18:32:43
7#
Richard.Ma 发表于 2021-6-23 18:01
加了这个判断代码后,我这里测试并不会重复调用
另外,你说的textChanged或取不到值的问题还请提供一个dem ...





每次输入和点击,都会调用很多次。
textChenanged控制台打印的 undefined


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-23 18:01:18
6#
加了这个判断代码后,我这里测试并不会重复调用
另外,你说的textChanged或取不到值的问题还请提供一个demo
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2021-6-23 15:36:03
5#
Richard.Ma 发表于 2021-6-23 12:13
参考我发给你代码,需要加一个判断就行

好的,那每次输入都会重复调用很多次,要如何解决呢?另外textChanged或取不到值的问题,是什么原因呢?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-23 12:13:24
地板
参考我发给你代码,需要加一个判断就行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部