【问题标题】:Convert type of KnockOutJs.linkObservableToUrl mapped value to bool将 KnockOutJs.linkObservableToUrl 映射值的类型转换为 bool
【发布时间】:2011-11-28 17:38:01
【问题描述】:

我正在开发涉及排序的单页应用程序。 我用

viewModel = new {
    SortAsc = ko.observable(true)
};
ko.linkObservableToUrl(viewModel.SortAsc, "Asc", viewModel.SortAsc());

实现该映射。它有效,但问题是映射返回文字字符串“false”和“true”而不是布尔值。这会导致与该属性绑定的复选框出现问题:

<input type="checkbox" data-bind="checked: SortAsc" value="Ascending"/>

问题是,如何将 url 中的值转换为正确的类型(普通 bool),这样我的复选框才能正确更新?

【问题讨论】:

    标签: boolean knockout.js


    【解决方案1】:

    好的,我找到了解决这个问题的方法。不是很优雅,但很有效。 1. 我假设 SortAsc 在我的逻辑中将是一个字符串属性。所以我把它绑定到问题文本中的url。只用字符串初始化它,而不是布尔值("true" 而不是true)。 2.我创建了可写的dependend observable,它将进行转换:

    viewModel.SortAscBool = ko.dependentObservable({
        read: function () {
            return this.SortAsc() === "true"; 
        },
        write: function (value) {
            this.SortAsc(String(value));
        },
        owner: viewModel
    });
    

    并将我的复选框绑定到该道具。所以现在,当复选框被选中时,SortAscBool 被更改并将文字值设置为 SortAsc(我认为这种转换确实不需要,但作为一个 C# 程序员我喜欢这样 :))。当然,当 SortAsc 发生变化时,SortAscBool 也会发生变化并将转换后的值返回到检查绑定。而这正是我们真正需要的。

    另外,我的第一个想法是简单地创建一种方式依赖可观察,但随后 url 将不会使用复选框中的值进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多