将属性从Int转换为String并在KnockoutJS中显示它

时间:2016-03-31 08:56:52

标签: javascript node.js knockout.js

我想将我的Int值转换为我创建的json的字符串。 我的变量ResultType在INT中,我想显示它的转换值。 ResultType保存值int,所以我的数据库中包含“1”,“2”等。

这是我的main.js代码

function InvestigatorInfo() {
  var self = this;
  self.ResultType = ko.observable();
}
InvestigatorInfo.prototype.fromJS = function(data) {
  var self = this;
  self.ResultType(data.ResultType || "");
}

我的观点:

<ul data-bind="foreach:Infos">
<b>ResultType: </b><span data-bind="text: resultName[ResultType]"></span>

这是我的转换代码:

resultName = {"0":"INVALID_VALUE","1":"NONE","2":"BOOLEAN"}

我需要先在原型函数中检查它是否为int? 任何帮助都会被贬低。 谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用ko.computed

在下面的示例中,我将类型/名称映射(resultTypeNames)作为静态构造函数属性。

&#13;
&#13;
function InvestigatorInfo() {
  var self = this;
  self.ResultType = ko.observable();
  self.ResultName = ko.computed(function () {
    return InvestigatorInfo.resultTypeNames[self.ResultType()] || "UNKNOWN";
  });
}
InvestigatorInfo.prototype.fromJS = function(data) {
  var self = this;
  self.ResultType(data.ResultType || "");
  return self;
}
InvestigatorInfo.resultTypeNames = {
  "0":"INVALID_VALUE",
  "1":"NONE",
  "2":"BOOLEAN"
}


var response = [
  { ResultType: "0" },
  { ResultType: "2" },
  { ResultType: "1" },
  { ResultType: "4" }
];

ko.applyBindings({
  Infos: ko.utils.arrayMap(response, function (data) {
    return new InvestigatorInfo().fromJS(data);
  })
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<ul data-bind="foreach:Infos">
  <li>
    <b>ResultType:</b>
    <span data-bind="text: ResultName"></span> (<span data-bind="text: ResultType"></span>)
  </li>
</ul>
&#13;
&#13;
&#13;