KnockoutJS - 如何根据返回的 JSON 结果计算数据

KnockoutJS - How to compute data from returned JSON results

我正在尝试更改返回 JSON

的 DOB resource.birthDate 的显示方式

Knockout.js:

this.rows= ko.observableArray([]);

$.getJSON(
  "./malib/api-call.php",
  function (data) {
     self.rows(data.entry);
  }
);

和HTML:

           <tbody data-bind="foreach: rows">
            <tr data-bind="attr: { id: resource.id}, css: {'isSelected':$root.selPatient() == $data}, click: $parent.highlightPatient.bind($parent), event : { dblclick: $parent.selectPatient.bind($parent) }" >
                <td class="col_name" data-bind="text: resource.name[0].text"></td>
                <td class="col_dob" data-bind="text: resource.birthDate"></td>
                <td class="col_gender" data-bind="text: resource.gender"></td>
                <td class="col_address" data-bind="text: resource.address[0].line[0] + ', ' + resource.address[0].city + ' ' + resource.address[0].state + ' ' + resource.address[0].postalCode"></td>
            </tr>
        </tbody>

我已将以下代码添加到 KnockoutJS 部分:

this.rows= ko.observableArray([]);

$.getJSON(
  "./malib/api-call.php",
  function (data) {
     self.rows(data.entry);

                        self.returnDOB = function(item) {

                            var nonusDOB = item.split("-");
                            return nonusDOB[2] +"/"+ nonusDOB[1] +"/"+ nonusDOB[0];
                        };  
  }
);

并替换为 HTML:

<td class="col_dob" data-bind="text: returnDOB(resource.birthDate)"></td>

但是该解决方案会引发错误

Message: returnDOB is not defined

有什么建议吗?

绑定试图在函数存在之前执行您的函数。您应该在 json 请求之外创建函数。

self.returnDOB = function(item) {
    var nonusDOB = item.split("-");
    return nonusDOB[2] +"/"+ nonusDOB[1] +"/"+ nonusDOB[0];
}; 

$.getJSON(
  "./malib/api-call.php",
  function (data) {
    self.rows(data.entry); 
  }
);