修改 textChange nativescript 中的文本
Modifying text inside textChange nativescript
我目前正在使用 HostListener 以便能够在用户键入文本的同时格式化用户文本。例如,如果用户正在键入 phone 数字,我希望能够根据需要添加格式。如果字符串为 0000,我希望文本为 000-0,如果文本为 0000000000,则为“(801) 123 - 1234”。我有执行此操作的逻辑,但我目前正在使用主机监听器来执行此操作。
@HostListener("textChange")
public onTextChange(target): void {
this.el.text = this.phoneFormatPipe.transform(this.el.text)
}
这有效,但它会一直调用自身,直到达到最大堆栈调用限制。这显然太慢了,所以我的问题是:如何在不触发 textChange 事件的情况下修改元素内的文本?还是有其他方法可以做到这一点?
提前致谢!编码愉快!
有更好的方法来完成您正在做的事情,但我不确定是否有更好的方法。来自 iOS 开发,我知道肯定有一个更合适的地方来做这种操作,但在这里做不应该导致你达到最大堆栈。
如果您更新源代码以执行此操作,您将避免最大堆栈限制(并显着提高应用程序的性能)。这不是 最好的 方式,但这是我目前在 NativeScript 中找到的最好的方式。
@HostListener("textChange")
public onTextChange(target): void {
let newText: string = this.phoneFormatPipe.transform(this.el.text);
if (this.el.text !== newText) {
this.el.text = newText;
}
}
它将是递归的,直到你确定它不是带有 if 条件的同一个字符串,就像在@Ian 的例子中一样。
此外,我建议检查 nativescript-masked-text-field 而不是在每次更改时手动设置文本格式。
我目前正在使用 HostListener 以便能够在用户键入文本的同时格式化用户文本。例如,如果用户正在键入 phone 数字,我希望能够根据需要添加格式。如果字符串为 0000,我希望文本为 000-0,如果文本为 0000000000,则为“(801) 123 - 1234”。我有执行此操作的逻辑,但我目前正在使用主机监听器来执行此操作。
@HostListener("textChange")
public onTextChange(target): void {
this.el.text = this.phoneFormatPipe.transform(this.el.text)
}
这有效,但它会一直调用自身,直到达到最大堆栈调用限制。这显然太慢了,所以我的问题是:如何在不触发 textChange 事件的情况下修改元素内的文本?还是有其他方法可以做到这一点?
提前致谢!编码愉快!
有更好的方法来完成您正在做的事情,但我不确定是否有更好的方法。来自 iOS 开发,我知道肯定有一个更合适的地方来做这种操作,但在这里做不应该导致你达到最大堆栈。
如果您更新源代码以执行此操作,您将避免最大堆栈限制(并显着提高应用程序的性能)。这不是 最好的 方式,但这是我目前在 NativeScript 中找到的最好的方式。
@HostListener("textChange")
public onTextChange(target): void {
let newText: string = this.phoneFormatPipe.transform(this.el.text);
if (this.el.text !== newText) {
this.el.text = newText;
}
}
它将是递归的,直到你确定它不是带有 if 条件的同一个字符串,就像在@Ian 的例子中一样。
此外,我建议检查 nativescript-masked-text-field 而不是在每次更改时手动设置文本格式。