我正在尝试将角度视图中的值从整数更改为绑定到ngmodel的float / double值。除了整数之外,输入除外。
我的猜测是,微风在后台做了一些事情来验证“已定义属性”中的值或其他内容。但我对JavaScript原型的知识非常有限,我需要学习它。
这真的很难解释所以我创建了一个可以提供帮助的插件:http://plnkr.co/edit/Gcj0VvBE3f8DRbIjMtqt?p=preview
在插件中我还添加了一个普通对象来测试相同的值,并且在将数字更改为浮点数/双精度数时它按预期工作。
所以问题是为什么从breeze绑定到float / double值时值不会改变?
答案 0 :(得分:2)
我发现我认为对您的用例更好的解决方案,因为它不涉及“去抖动”,也不涉及对Breeze的任何更改。请参阅zEquivalent
指令in this new plunker
提醒:您发现的问题的“最佳”解决方案仍然在Breeze核心团队中播出。在我们提出更明确的建议之前,您不应该锁定特定的结果。
p.s。:我应该提到Jay和我是Breeze核心团队的成员。我们正在尽最大努力让你摆脱困境,但有时我们会过快地移动你。请跟我们一起。
将其留在这里以达到“历史”的目的。
我认为你应该首先尝试zEquivalent
指令。
重要的是要知道Angular团队正致力于对包含“去抖动”的数据绑定进行强大的扩展,这对于许多场景来说仍然是一个好主意。 Angular GitHub网站上的See this (long) pull request thread。
考虑当前位于in this plunker的zDebounce
指令,该指令基于@ qorsmond的第二次尝试。
我想知道你的想法。我倾向于称之为“解决方案”并将其添加到Breeze Labs。如果/我将其添加到实验室,我会更新此答案。
答案 1 :(得分:2)
我已经检查了GitHub的初步修复程序。请检查一下,让我知道它是否有效。我们还在测试它。
此问题是由Angular的(新)行为引起的,如果角度摘要周期没有看到模型属性的更改,那么它似乎将UI重置为之前的摘要周期。所以..这个修复背后的想法是说服角度模型值已经改变,即使它没有。
和..很好的捕获(这不明显,你的plunkr帮助):)
沃德补充说:你必须喜欢微风团队的响应能力:-)杰伊跳上了这一点并提出了一个有趣的解决方案。但请在周杰伦的答案中注明" 初步" 。我们正在讨论这个"修复"在内部,它可能会被撤回。考虑zEquivalent
指令in this new plunker或者等到尘埃落定。
答案 2 :(得分:0)
你可以使用input type =“number”step =“any”并使用css隐藏箭头
答案 3 :(得分:0)
我在breeze代码中跟踪了行为,当值被更改时被截获并解析:
var coerceToFloat = function (source, sourceTypeName) {
if (sourceTypeName === "string") {
var src = source.trim();
if (src === "") return null;
var val = parseFloat(src);
return isNaN(val) ? source : val;
}
return source;
};
因此,当值更改时,调用此函数将字符串解析为float,问题是输入的值是某个数字,而5.
之类的点将其解析为数字{{1巫婆显然是正确的。所以你永远无法超越这一点。
将输入更改为数字类型时,它的工作原理是因为它的sourceTypeName不是字符串。
<强>更新强>
我最后改变了微风代码以便输入小数,我仍然不确定我是否错过了一些东西,但这对我有用。
5
答案 4 :(得分:0)
这不适用于可能使用指数形式输入的大小数字。如果我想输入2.55e35(大工资;)),当前的实现将停在'e'。有没有一种简单的方法来解决这个问题?