我在CakePHP上使用knockout.js,我似乎无法让knockout-validation工作。我正在使用chrome和knockout-validation加载到脚本中,并且还显示在网络选项卡中。此外,当我删除“包含脚本”时,我会收到各种错误,所以我知道它被包含在内。
我有一个名为ReserveViewModel的视图模型。这是我正在尝试验证的输入示例。我没有得到任何错误,它只是没有标记任何东西。
ko.validation.configure({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null
});
function ReserveViewModel(){
var self = this;
self.firstName = ko.observable("").extend({ required: true })
.extend({ minLength: 3 })
.extend({ pattern: {
message: 'Please enter your first name',
params: '^[a-zA-Z]'
}});
//button to continue to another div with more options
self.continue = function(){
self.errors = ko.validation.group(self);
if (self.errors().length == 0) {
alert('Error found');
}
}
}
ko.validation.registerExtenders();
ko.applyBindings(new ReserveViewModel());
当我单击“继续”按钮并且firstName输入为空时,它仍然继续。我尝试在self.errors().length
上发出提醒,但会导致以下错误
function m(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}l||e();a.q.bb(m);return k}
如果它有所不同,我将通过CakePHP通过AJAX调用加载此内容。这会影响到什么吗?可能是某种关闭吗?
编辑我让它工作
我最终使用jQuery来检索所有必需的脚本。然后我会使用AJAX来填充div。在我通过AJAX检索的页面上,我包含了ViewModel文件。
由于文件在不同时间加载,这是一个奇怪的混淆,所以我只需要用jquery顺序加载它们。