2012-09-21 44 views
0

我有一個可觀察數組的敲除模型,試圖調用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 --> 
+0

你可以發佈一些更多的上下文嗎?就像您在KO模型上的屬性定義以及您嘗試調用'this.reportFields.remove'的方法一樣? – nemesv

回答

0

我懷疑reportFields '類型在代碼中的某些地方已被更改爲observableArray以外的內容。 給它一個嘗試改變這樣

this.reportFields().remove(.....) 

如果這樣的作品的代碼,可以肯定的是reportFields不observableArray通過移動remove函數出模型本身即不是具有這種

+0

然後,這會將錯誤更改爲無法找到方法reportFields()因此應該是observableArray – user1166905

+0

您可以詳細說明將元素推送到reportFields的代碼嗎? – Ray

+0

Ajax調用獲取具有相同屬性的類(僅顯示成功部分): '成功:函數(結果){ var fld = result.d; fld.QueryNumber =「0」; model.reportFields.push(fld); },' – user1166905

0

解決了這個問題.reportFields.remove(等)內的淘汰賽模型的功能,我稱爲外部功能,並將其更改爲model.reportFields.remove(等)

我認爲,因爲對象是使用模型推送。從外部來說,我必須爲其他相關功能做同樣的事情。