Javascript 淘汰扩展器重新启动所有型号
在我决定向视图模型添加一些扩展程序之前,一切都很好 我只是在做复制粘贴。我需要的是强制某些字段为数字(在本例中,我使用所需的扩展) 问题是,当我更改扩展属性时,我的所有模型都会重新启动。我怎么知道?因为所有字段都有初始值Javascript 淘汰扩展器重新启动所有型号,javascript,knockout.js,Javascript,Knockout.js,在我决定向视图模型添加一些扩展程序之前,一切都很好 我只是在做复制粘贴。我需要的是强制某些字段为数字(在本例中,我使用所需的扩展) 问题是,当我更改扩展属性时,我的所有模型都会重新启动。我怎么知道?因为所有字段都有初始值 var ProductToAddVM = function () { var self = this; self.style = ko.observable().extend({ required: "Please enter a first name" });
var ProductToAddVM = function () {
var self = this;
self.style = ko.observable().extend({ required: "Please enter a first name" });
self.children = ko.computed(function () { return "something computed" }
};
var PurchaseVM = function () {
var self = this;
self.newInvoiceNewProduct = ko.observable(new ProductToAddVM());
};
ko.extenders.required = function (target, overrideMessage) {
//add some sub-observables to our observable
target.hasError = ko.observable();
target.validationMessage = ko.observable();
//define a function to do validation
function validate(newValue) {
target.hasError(newValue ? false : true);
target.validationMessage(newValue ? "" : overrideMessage || "This field is required");
}
//initial validation
validate(target());
//validate whenever the value changes
target.subscribe(validate);
//return the original observable
return target;
};
$(document).ready(function() {
ko.applyBindings(PurchaseVM);
});
我错过了什么
更新
这是我的小提琴。为什么我的模型要重新启动?我是usre,它正在重新启动,因为它正在进行ajax调用以加载我的模型(而不是在fiddle中)
在这里查找语法错误-
还有其他的…你能做一把小提琴吗?看来你所有的问题都是语法问题,而不是括号和括号之类的。你缺少了一个
new
:ko.applyBindings(newpurchasevm)非常感谢,就是这样,我真的很失望汉克斯,我在创作小提琴,但它不起作用。我会看到你的exmaple+1。当然,检查小提琴并更新它,告诉我什么不起作用,我可以从那里提供帮助,但在基本语法之后,我认为这就是原因。也许我的绑定是错误的,我得到了相同的错误
var ProductToAddVM = function () {
var self = this;
self.style = ko.observable().extend({ required: "Please enter a first name" });
self.children = ko.computed(function () { return "something computed" });
}