我有一个显示发票的表格,然后是一个显示对这些发票进行的单独检查的嵌套表格。我正在使用 knockout 和 typescript 来呈现这些表格。我能够显示发票,但支票表不显示数据。这是到目前为止的代码:
<tbody class="nohighlight" data-bind="foreach: parent.bankDrafts">
<tr>
<td><span data-bind="text: CheckID"></span></td>
<td><span data-bind="text: CheckRunID"></span></td>
<td><span data-bind="text: VendorName"></span></td>
<td><span data-bind="text: CheckDate"></span></td>
<td><span data-bind="text: FormatCurrency(CheckAmount)"></span></td>
<td><span data-bind="text: Globalize.formatCheckRunApproveStatus(ApprovalStatusID)"></span></td>
</tr>
</tbody>
这是 typescript :
namespace CheckRunApproval {
declare let searchParameter: string;
class SearchCheckRunModel {
public searchParameter = ko.observable<string>(searchParameter || null);
public checkRuns = ko.observableArray<CheckRunModel>(null);
public bankDrafts = ko.observableArray<BankDraftInfoModel>();
}
var model = new SearchCheckRunModel();
export function GetBankDrafts(data: CheckRunModel): void {
CheckRunServiceMethods.GetBankDrafts(data.CheckRunID())
.done(bankDrafts => ko.mapping.fromJS(bankDrafts, null, model.bankDrafts));
}
}
这是服务调用:
public static GetBankDrafts(checkrunID: number): JQueryPromise<BankDraftInfo[]> {
return CommonMethods.doAjax<BankDraftInfo[]>(
"/Corp/Checks/CheckRunApprovalWS.asmx/getBankDrafts",
JSON.stringify({ checkrunID }),
"GetBankDrafts"
);
}
现在,服务器调用确实到达了服务器端代码,传递了正确的参数并返回我试图作为发票的一部分显示的支票列表。但是,该表本身没有任何数据。
我的想法是,这与我将模型映射到 View 模型的方式有关。这也可能是我设置表格本身的方式,具有正确的 knockout 属性等。任何帮助将不胜感激。
编辑:将parent.bankDrafts更改为$parent.bankDrafts()它解决了问题。
最佳答案
您的代码中有一个拼写错误。在 foreach 绑定(bind)中使用 $parent.bankDrafts
而不是 parent.bankDrafts
。
关于javascript - knockout TypeScript 表不渲染数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40702109/