- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 KnockoutJS,但遇到了一个问题,我不知道如何寻找解决方案:
我有一个包含记录的表:
<script type="text/html" id="myItemsTemplate">
<tr>
<td data-bind="text: MyNumber().toFixed(2)"></td>
<td>
<button class="btn" data-bind="click: $root.editItem">Edit</button></td>
<td>
<button class="btn btn-primary" data-bind="click: $root.enterHours">Enter Hours</button></td>
</tr>
最初“MyNumber().toFixed(2)”只是“MyNumber”,但我遇到了一个问题,“MyNumber”不会显示小数位,或者会根据值显示超过 2 位小数位(如果该值为“7.00”,它将仅显示“7”,如果该值为“7.345345”,它将显示完整的“7.345345”)。所以我将其更改为“MyNumber().toFixed(2)”。
这似乎修复了显示,但现在似乎已经破坏了更新部分:
<script type="text/html" id="myEditTemplate">
<tr>
<td>
<input data-bind="value: MyNumber" class="table-edit" /></td>
<td>
<button class="btn btn-success" data-bind="click: $root.acceptItemEdit">Save</button></td>
<td>
<button class="btn btn-warning" data-bind="click: $root.cancelItemEdit">Cancel</button></td>
</tr>
</script>
在这里,当我尝试保存记录时,它会保存它,但也会返回错误:
错误:无法解析绑定(bind)。消息:类型错误:对象不支持属性或方法“toFixed”;绑定(bind)值:文本:MyNumber().toFixed(2)
我尝试更改编辑模板,使其使用:ko.utils.unwrapObservable(MyNumber()).toFixed(2)或者MyNumber().toFixed(2) 以匹配项目模板。这不会导致 Javascript 错误,但也不会更新值。
我看到帖子说这是因为“MyNumber”不是可观察的,所以我尝试了 unwrapObservable()。除此之外,我不确定应该从哪里寻找问题所在。
最佳答案
根据您的问题描述,我在这里重现了一个测试用例:http://jsfiddle.net/w2nae2dq/。@icktoofay 在一方面是正确的:最好使用计算的可观察量(但它本身不是必需的)。如果您需要显示 2 个小数值进行编辑,您将需要一个可写的计算可观察量。但是,如果您只想显示 2 位十进制数并使 MyNumber
值可编辑,请检查 fiddle 的演示。
无论如何,您的代码的问题是类型转换之一。事实上,当您第一次设置 MyNumber
的值时,它是一个数字。但是,当用户在 <input>
中输入新值(从而更新 MyNumber
)时,该值将设置为字符串值,这使得 text:
绑定(bind)无法执行 toFixed
方法。因此,您计算的可观察量将如下所示:
self.MyNumberRounded = ko.computed(function() {
return parseFloat(self.MyNumber()).toFixed(2); // note parseFloat
}, self);
这就是为什么 Object doesn't support property
:)
关于javascript - KnockoutJS对象不支持 'toFixed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642386/
像下面这样使用 toFixed 得到: var a=0.5, b=1, c=1.5; console.log(a.toFixed(), b.toFixed(), c.toFixed()); // 0.
这个问题已经有答案了: Javascript toFixed function (6 个回答) 已关闭 9 年前。 当非小数部分大于 4 时,小数部分将被 chop 为 .3但当它小于 4 时,它会四
var number = 1.2; var rounded = number.tofixed() + 2 我正在尝试用任何数字求和 tofixed 值,但使用上面的代码我被四舍五入 = 12 吓到了.
我想知道之间的主要区别是什么 (2.3444).toFixed(2) ==> 2.34 还有 +(2.3444).toFixed(2) ==> 2.34 它们都给出相同的结果。谁能解释一下我什么时候需
根据这个post , 42..toFixed( 3 ); // "42.000" 上述代码有效,42..toFixed(3) 有效,因为第一个 . 是数字的一部分,第二个 . > 是属性运算符。
在许多情况下,toFixed() 会因 JavaScript 数学中的浮点而失败。 我找到了这个解决方案: function toFixed(decimalPlaces) { var factor =
我有以下代码块: export interface Record { Percentage_Emissions: number; Percentage_Emissions_Previous: numb
我正在使用 javascript 绑定(bind)到一些复选框,toFixed(2) 没有四舍五入。任何想法为什么它不四舍五入?例如,如果号码是 859.385,它只会显示 859.38 而不是 85
在我的程序中,我需要四舍五入到最接近的两位小数的“浮点”数字,经过一番研究,我决定使用 toFixed(..) 来实现此目的,如下例所示。使用 toFixed() 的缺点是什么?它在所有浏览器中都能正
美好的一天, 我仍在学习 JS 和 HTML,我注意到一些对我来说非常有趣的事情 我正在使用 Google 地理编码脚本,并在 map 上创建了一个点击事件来检索 GPS 坐标, function
我正在使用 toFixed 但该方法未按预期运行 parseFloat(19373.315).toFixed(2); //19373.31 Chrome 预期输出:19373.32 parseFl
我正在测试 javascript 的 toFixed() 方法。结果如下图。 (49.175).toFixed(2) => "49.17" (49.775).toFixed(2) => "49.77"
在特定组的用户的帐户仪表板上会显示一个唯一的编号。该数字是从数据库中获取并经常更改的。数量小于 10,000,000。 如果元素的宽度开始 chop 文本,那么将数字从“2,643,977”更改为“2
我的代码出现错误,以前从未遇到过这个错误,这真的很奇怪。我确实尝试过 parseFloat 但这也不起作用..代码:https://gist.github.com/markd69/aca03cab20
我正在使用 KnockoutJS,但遇到了一个问题,我不知道如何寻找解决方案: 我有一个包含记录的表: Edit Enter Hour
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
对于四舍五入小数(价格),我已经使用 .toFixed(2) 一段时间了。但我最近发现 JavaScript 不能“精确”四舍五入小数。我有点震惊,即使 10.005 也无法正确舍入为 10.01。它
我有以下代码来计算并显示两个值的总和。 var oldprice_formated = parseFloat(oldprice).toFixed(2); var extraPrice = parseF
这是我的脚本: jQuery(document).ready(function () { jQuery('#btnCalculate').click(function () {
我想保留数字后面的两位数字,即 2.89 或 2.00。谷歌把我带到this answer使用.toFixed(2)。 虽然效果很好,但在输入 input 值时效果不佳: const [ value,
我是一名优秀的程序员,十分优秀!