2012-02-13 140 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

相關問題