javascript - 使 Knockout applyBindings 将选择选项视为数字

标签 javascript html knockout.js

我将 Knockout 与 html 选择/选项结合使用(请参阅 Fiddle):

<select data-bind="value: Width">
    <option>10</option>
    <option>100</option>
</select>

调用 applyBindings 时,此选项被视为字符串。这会导致不良影响。考虑以下示例:

function AreaViewModel() {
    var self = this;

    self.Width = ko.observable(10);
    self.Height = ko.observable(10);

    self.Area = ko.computed(function () {
        return self.Width() * self.Height();
    });
}

$(document).ready(function () {
    var viewModel = new AreaViewModel();

    ko.applyBindings(viewModel);
});

applyBindings 被调用时,self.Widthself.Height 被从它们的初始值 10 类型转换为“10”,这导致重新评估计算函数。

这在这里似乎没什么大不了的,但在更复杂的解决方案中,我有一个 PageSize 属性(每页 100/500/1000 行),当此属性更改时会导致多次 AJAX 调用。

有哪些(奇特的)解决方案可以解决这个问题?

最佳答案

你可以尝试类似的东西

self.Width = ko.observable(10);
self.Width.subscribe(function(newValue){
   if(typeof newValue === "string"){
       self.Width(parseInt(newValue));
   }
});

关于javascript - 使 Knockout applyBindings 将选择选项视为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056103/

相关文章:

javascript - 从 Canvas 像素数据中获取错误的 RGB 值

javascript - 如何在图像 map 上创建一个 html 工具提示?

html - 如何使用 CSS 替换 PNG 图像的颜色?

knockout.js - 如何使用 knockout.js 显示警报/弹出窗口/窗口

javascript - JavaScript/HTML5 的 RTSP 解决方案

javascript - Markdown 到 html javascript

Javascript - 除非我警告(),否则更改图像将不起作用

javascript - 在 HTML5 和 JavaScript 中使用货币符号

javascript - 将某些 observableArray 对象属性转换为 observable

javascript - 如何使用knockout JS 验证日期(年份)?