我有一個顯示使用以下方法構建的文件模板列表的頁面。從Knockout observableArray對象的第n個索引中提取特定字段
var loadCustomTemplate = function() {
loadBaseTemplate();
var res = 0;
for (i = 0; i < self.GetSeam().length; i++) {
var a = self.count() + 1;
self.count(a);
res = self.GetSeam()[i].FileFormat.split("_");
if (res.length == 4) {
var ap = res[3].split('.');
self.append(ap[0]);
} else {
self.append("");
}
var obj = {
Code: ko.observable(self.code()),
Number: ko.observable(self.number()),
SeamReportPath: ko.observable(self.reportPath()),
FileFormat: ko.observable(self.append()),
SequenceNumber: ko.observable(a)
}
self.CustomTemplate.push(obj);
}
self.count(0);
};
然後允許用戶根據需要編輯字段。他們還可以根據需要添加記錄或刪除記錄。添加記錄的方法如下。
self.addTemplate = function() {
var count = self.CustomTemplate().length + 1;
var obj = {
Code: ko.observable(self.code()),
Number: ko.observable(self.number()),
SeamReportPath: ko.observable(self.reportPath()),
FileFormat: ko.observable(""),
SequenceNumber: ko.observable(count)
}
self.CustomTemplate.push(obj)
};
一旦進行了這些更新,他們可以保存更新後的CustomTemplate。這使用了對這個問題不重要的ajax。 save方法調用應該檢查的驗證方法,以確保對象數組中沒有重複的FileFormat字段。這是我的,但它是失敗的。
var validateTemplates = function() {
for (i = 0; i < self.CustomTemplate().length; i++) {
var checkVal = self.CustomTemplate()[i].FileFormat;
var checkSeq = self.CustomTemplate()[i].SequenceNumber;
for (j = 0; j < self.CustomTemplate().length; j++) {
if (checkSeq !== self.CustomTemplate()[j].SequenceNumber){
if (checkVal+"" === self.CustomTemplate()[j].FileFormat) {
if (checkSeq == self.CustomTemplate()[j].SequenceNumber){
return false;
}
}
}
}
return true;
};
的問題是,檢查self.CustomTemplate當()[I] .FileFormat和self.CustomTemplate().SequenceNumber它不反射顯示頁面上的數據或將數據發送[I]到控制器(MVC 4)。如果我將其中的任何一個置於警報中,它將顯示一個功能。如何訪問這些特定領域的數據進行比較?
在此先感謝。
敲除可觀察值是函數。爲了設置它們的值,你可以用一個參數來調用它們。爲了獲得他們的價值,你可以不帶參數地給他們打電話。 I.e .:'var a = ko.observable(1); a2); console.log(a());'打印'2' – user3297291