我正在使用knockout.js映射函數來映射我從服務器端asp.net應用程序接收到的json對象。使用Chrome的調試器,我可以看到json對象正在被接收,但是當我使用ko.mapping.fromJS創建可觀察對象時,所有內部可觀察數組都顯示爲長度0.在QCTest中有多個數組。如何使用映射功能訪問可敲陣列敲除
var testDefJSON = getTestDefJSON();
var ViewModel = function() {
var self = this;
self.QCtest = ko.mapping.fromJS(testDefJSON);
self.hasBuiltNewGroup = ko.observable(false);
self.selectedOp = ko.observable();
self.selectedUom = ko.observable();
self.addTestGroup = function() {
show_modal("createGroupModal");
};
self.saveTest = function() {
var jsData = ko.toJS(ViewModel);
var json = JSON.stringify(jsData);
$.ajax({
type: 'POST',
url: '/Test/SaveTest',
async: false,
data: json,
contentType: "application/json",
success: function (result) { alert(result) },
error: function() { alert("failed to post test data"); }
});
};
self.delItems = function() {
alert(self.QCtest.QCTestGroups.length);
};
self.closeItemModal = function() {
ViewModel.hasBuiltNewGroup(false);
close_modal();
};
self.createNewGroup = function() {
ViewModel.hasBuiltNewGroup(true);
};
self.addNewTestItem = function() {
alert("Adding new test item button works");
};
};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
我所有的UI元素的出現只是因爲他們應該在使用一個foreach /模板通過內部陣列。然而,當我點擊我的delItems按鈕時,警報彈出並指出內部數組QCTestItems的長度爲0,當它至少應爲1(但數組中的許多測試項目)時。
我需要能夠刪除按DelItems按鈕時檢查的項目。爲此,我需要訪問該數組中的元素,並且由於其長度爲0,所以很難做到這一點。
任何幫助,將不勝感激
編輯:
改變self.delItems = function() { alert(self.QCtest.QCTestGroups.length); };
到self.delItems = function() { alert(self.QCtest.QCTestGroups().length); };
,現在,它的工作原理
謝謝,現在這個警告提供了可觀察元素的適當數量。我將用添加的()來測試所有其他的東西。 – lbdm44