敲除因变量:如何正确定义结构

时间:2013-11-26 09:41:18

标签: javascript knockout.js

我是Knockout的新手,我有以下问题:

我有来自数据库的ID并且每个Id都有相应的描述(这是.NET中的实际枚举,但我不认为这在这个问题中很重要。)

例如,

a)变量“PType”:0 - Undefined; 1 - Low Structure; 2 - Hight Structure b)变量“ClientType”:0 - Undefined, 1 - P Type; 2 - S Type 其他一些变量也是

如何正确定义此依赖项的模型? 目前我只有像

这样的ID
PType: ko.observable();
ClientType: ko.observable();

我在页面上显示ID:

<span data-bind="text: PType"></span>
<span data-bind="text: ClientType"></span>

但是,我需要为用户显示:PTypeDescriptionClientTypeDescription。我相信这些是某种因变量,但不能让它发挥作用。

1 个答案:

答案 0 :(得分:1)

首先我假设你已经知道你有什么枚举,当你通过AJAX获取数据时,你得到的枚举值代表integer而不是string

您可以轻松地在Javascript中模拟枚举(查看this article):

var PType = { 0: "Undefined", 1: "Low Structure", 2: "Hight Structure" }
var ClientType = { 0: "Undefined", 1: "P Type", 2: "S Type" }

因此,您的视图模型可能类似于:

var itemObj = {
    PType: ko.observable(0);
    ClientType: ko.observable(0);
    property1:ko.observable('')// put here the other properties if you have more
}

要将你的枚举作为枚举重新编写,你可以编写调用函数,该函数接受value(“你的枚举键”)以及使用哪个枚举(“你可以使用内联函数”)。

<强> JsFiddle Demo

<强>更新
将此SO answer检查为JS中Enums的另一个实现,它简单有效