我有一个页面,显示使用以下方法构建的文件模板列表。
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()[i] .SequenceNumber时,它不反映页面上显示的数据或发送到的页面上的数据控制器(MVC 4)。如果我将其中任何一个置于警报状态,它就会显示一个功能。如何访问这些特定字段中的数据以进行比较?
提前致谢。
答案 0 :(得分:1)
如果我将其中任何一个置于警报状态,它就会显示一个功能。
那是因为你做了这样的事情:
var checkVal = self.CustomTemplate()[i].FileFormat;
FileFormat
是ko.observable(...)
的结果,它返回函数,因此checkVal
实际上确实包含一个函数。
解决方案适用于所有这些情况:
var checkVal = self.CustomTemplate()[i].FileFormat(); // Parentheses at the end!
括号执行可观察功能,如果你这样做没有参数,你可以得到&#34;得到&#34;可观察的价值。 (如果你传入一个值,它会&#34;设置&#34; observable到那个值。)