Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰扩展器重新启动所有型号_Javascript_Knockout.js - Fatal编程技术网

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)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" }); 
}