Unclaimed project
Are you a maintainer of jigsaw? Claim this project to take control of your public changelog and roadmap.
Changelog
Jigsaw七巧板 provides a set of web components based on Angular5/8/9+. The main purpose of Jigsaw is to help the application developers to construct complex & intensive interacting & user friendly web pages. Jigsaw is supporting the development of all applications of Big Data Product of ZTE.
select控件的valueChange事件触发时机有细微的变化,此前,通过select组件的value属性输入任何非空新对象都会触发valueChange事件,而不管当前控件是否给定了trackItemBy属性。这个做法导致了trackItemBy属性失去作用。比如下面的代码
html:
// 注意,trackItemBy值为label,是有效的,这是关键
<j-select [value]="value" trackItemBy="label" (valueChange)="onValueChange()">
</j-select>
ts:
this.value = {label: 'xxx'}; // onValueChange将会被调用
this.value = {label: 'xxx'}; // onValueChange也会被调用,因为前后两次给的value值不是同一个对象。
现在,控件在触发valueChange事件之前,增加了对trackItemBy值的判断,行为发生了变更:
html: 与前例一致
ts:
this.value = {label: 'xxx'}; // onValueChange将会被调用
this.value = {label: 'xxx'}; // onValueChange不会被调用,因为label的值前后都是xxx,没有变化
但请注意,如果trackItemBy值为空,则select控件触发valueChange事件的行为与之前一致:
html:
// 注意,trackItemBy没有配置,为非法值
<j-select [value]="value" (valueChange)="onValueChange()">
</j-select>
ts:
this.value = {label: 'xxx'}; // onValueChange将会被调用
this.value = {label: 'xxx'}; // onValueChange也会被调用,不给trackItemBy时,select控件会按照引用来判定value是否发生变化
总体来说,这个破坏性很小,可以忽视。