2012-02-13 197 views
2

请给我建议,如何解决如下:如何使用Knockout映射将一个属性映射到另一个属性?

我已在模型中定义为

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

和视图模型在JS作为

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

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

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

但是对于ko.mapping p lugin属性'名称'不等于'名称'。

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

回答

2

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

而对于套管,请更改您的序列化约定以小写属性。

或者,你可以做我所做的事情,并在视图模型中接受大写字母。尽管它与常见的Javascript惯例不太一样,但我已经接受它作为“来自服务器的属性”。

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

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

如果您需要任何服务器端对象转换为JavaScript“对象”,可以实现在映射对象转换,像我这样做here

+0

好吧,我明白了。 但是,我可以通过添加JSON序列化器的属性来指定序列化我的服务器端属性,根据客户端的命名约定? – 2012-02-14 09:30:45

+1

您可以查看:http://stackoverflow.com/a/6288726/444118 – 2012-02-14 10:43:51

相关问题