監視可能な配列を持つノックアウト モデルがあり、remove 関数を呼び出そうとしていますが、「remove」は未定義であると言っています。これが機能するものです:
this.reportGroups.remove(function (item) { return item.fieldId == data.fieldId });
そして、これがエラーを与えるものです:
this.reportFields.remove(function (item) { return item.FieldId == data.FieldId });
それらは両方ともobservableArraysであり、アイテムが含まれています。渡された値が有効であり、FieldIdなどが含まれていることを確認したので、さらにデバッグする方法がわかりませんか?
編集:
配列に入るモデル:
function FieldItem(FieldId, TableId, GroupId, PositionInGroup, FieldName, FieldType, FriendlyName, Description, QueryNumber) {
return {
FieldId: FieldId,
TableId: TableId,
GroupId: GroupId,
PositionInGroup: PositionInGroup,
FieldName: FieldName,
FieldType: FieldType,
FriendlyName: FriendlyName,
Description: Description,
QueryNumber: QueryNumber
};
}
それらは reportFields observableArray にプッシュすることで追加され、次のように呼び出される関数を削除します。
<!-- ko foreach: reportFields -->
<tr>
<td><span data-bind="text: FriendlyName"></span></td>
<td><img src="SystemImages/cross.png" data-bind="click: $parent.removeField" /></td>
</tr>
<!-- /ko -->