gpt4 book ai didi

javascript - 强制 View 从 valueconverter 内更新

转载 作者:行者123 更新时间:2023-11-28 18:31:34 25 4
gpt4 key购买 nike

昨天有人在 gitter 上发布了这个。我最近遇到了同样的问题。因为这是一个常见的用例,我只是再次在这里发布他的问题,这样它就不会在 gitter 宇宙中迷失......有没有一种简单的方法可以强制 ValueConverter 始终为每个 fromView 调用 toView ?我有一个我正在使用 ValueConverter 来仅限制整数。它可以工作,但有一个奇怪的变化:如果我将其从 0 更改为 1.5 并单击(此处也使用 updateTrigger:'blur'),它会正确地将 1 存储在 VM 中,然后也将输入值更改为 1。但是,如果我将其从 1 更改为 1.5,它会更新 VM,但由于 VM 中的值似乎没有更改,因此它不会更新输入(不调用 toView)。我知道我可以用事件监听器和信号来解决这个问题,但这感觉有点矫枉过正。谢谢

最佳答案

如果你想添加“行为”,最好使用绑定(bind)行为。这将为您提供更多控制,您甚至可以控制光标等。

https://gist.run?id=3d2870889cbf245e652f53db28d8476b

整数输入绑定(bind)-behavior.js

export class IntegerInputBindingBehavior {
bind(binding, source) {
binding.standardUpdateSource = binding.updateSource;
binding.updateSource = function(value) {
const intValue = parseInt(value, 10);
if (isNaN(intValue)) {
this.standardUpdateSource(0);
return;
}
this.standardUpdateSource(intValue);
if (intValue.toString(10) !== value) {
this.updateTarget(intValue.toString(10));
}
};
}

unbind(binding, source) {
binding.updateSource = binding.standardUpdateSource
binding.standardUpdateSource = null;
}
}

最好还是创建一个自定义元素。

关于javascript - 强制 View 从 valueconverter 内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37882659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com