如何使用Knockout Mapping将一个属性映射到另一个属性?

时间:2012-02-13 15:34:08

标签: knockout.js knockout-mapping-plugin

请建议我,如何解决以下问题:

我将模型定义为

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

和JS中的ViewModel

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

另外,我有回调应该更新viewmodel:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

或者,您可以执行我已完成的操作并接受视图模型中的大写字母。即使它与常见的Javascript约定不太相配,我也接受它为“来自服务器的属性”。

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

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

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

一样