首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将KnockOutJs.linkObservableToUrl映射值的类型转换为布尔值

将KnockOutJs.linkObservableToUrl映射值的类型转换为布尔值
EN

Stack Overflow用户
提问于 2011-11-29 01:38:02
回答 1查看 440关注 0票数 1

我在单页应用程序上工作,这涉及到排序。我使用

代码语言:javascript
运行
复制
viewModel = new {
    SortAsc = ko.observable(true)
};
ko.linkObservableToUrl(viewModel.SortAsc, "Asc", viewModel.SortAsc());

来实现这种映射。它可以工作,但问题是映射返回的是文字字符串"false“和"true”,而不是布尔值。这会导致绑定到该属性的checkbox出现问题:

代码语言:javascript
运行
复制
<input type="checkbox" data-bind="checked: SortAsc" value="Ascending"/>

问题是,如何将url中值转换为正确类型(普通布尔值),以便正确更新我的复选框?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-29 02:01:43

好了,我找到了克服这个问题的方法。不是很优雅,但很管用。1.我假设在我的逻辑中,SortAsc将是一个字符串属性。所以我把它绑定到url,就像在问题文本中一样。仅使用字符串初始化,而不是布尔型(true"true"接口)。2.我创建了writeable,它将进行转换:

代码语言:javascript
运行
复制
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将不会使用复选框中的值进行更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8299925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档