【问题标题】:How to map one property to another with Knockout Mapping?如何使用 Knockout Mapping 将一个属性映射到另一个属性?
【发布时间】:2012-03-05 00:19:39
【问题描述】:

我将模型定义为

public class Model
{
    public string Name { get; set;}
}

和 JS 中的 ViewModel 作为

var vm = {
   name : ko.observable()
}

另外,我有回调应该更新视图模型:

function callback(data)
{
   ko.mapping.fromJS(data, {}, viewModel);
}

但是对于 ko.mapping 插件属性 'name' 不等于 'Name'。

如何定义从 'Name' 到 'name' 的映射?

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

    首先,您不需要在 viewModel 中指定 name 属性,因为映射插件会为您添加它。

    对于大小写,将您的序列化约定更改为小写属性。

    或者,你可以做我所做的并在你的视图模型中接受大写。尽管它与常见的 Javascript 约定不太吻合,但我已经接受它作为“来自服务器的属性”。

    我发现知道哪些是从映射中创建的以及哪些用于视图模型事物非常方便。当然,您不会在视图模型中看到服务器生成/映射的属性,但它们会在那里。

    我使用它在服务器上指定和创建服务器端视图模型,将它们序列化并将它们映射到我的淘汰模型。这样我就可以只专注于淘汰视图模型中的行为。

    如果您需要将任何服务器端对象转换为 javascript“对象”,您可以在映射对象中实现该转换,就像我做的 here

    【讨论】:

    • 好的,我明白了。但是,我可以通过添加 JSON 序列化程序的属性来指定根据客户端的命名约定序列化我的服务器端属性吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 2019-10-13
    • 1970-01-01
    • 2019-04-27
    • 2015-01-11
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多