gpt4 book ai didi

javascript - knockout 延长器重新启动所有型号

转载 作者:行者123 更新时间:2023-11-28 01:31:11 25 4
gpt4 key购买 nike

一切都很好,直到我决定向我的 View 模型添加一些扩展器。

我只是从 knockout docs 进行复制粘贴。我需要的是强制某些字段为数字(在本例中我使用所需的扩展)。

问题是当我更改扩展属性时,我的所有模型都会重新启动。我怎么知道呢?因为所有字段都会获得初始值。

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

我错过了什么?

更新

这是我的 fiddle 。为什么我的模型会重新启动?我是 usre,它正在重新启动,因为它正在进行 ajax 调用来加载我的模型(不是在 fiddle 中)

http://jsfiddle.net/btordz/S8fZ4/1/

最佳答案

在此处查找语法错误 -

http://jsfiddle.net/y3P9P/

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

还有其他的...

关于javascript - knockout 延长器重新启动所有型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com