У меня есть раскрывающийся список, который позволяет человеку выбрать вариант ценообразования, один из которых - «Скидка». Если выбрана опция «Скидка», мне нужно, чтобы поле затрат стало отрицательным. Это было легко достичь.Нокаут: изменение значения ввода зависит от значения понижающего значения
Моя проблема: как я могу сделать поле затрат отрицательным после ввода положительного значения, обнаружив, что опция ценообразования выпадает на «Скидка». Ниже приведен упрощенный вариант моей модели и то, что у меня есть для логики, чтобы превратить число в отрицательное, если сбрасывается.
var row = function (pricing, c) {
var self = this;
self.cost = ko.observable(c ? c : "0").extend({ required: true });
self.pricingOptions = ko.observableArray([
{ id: "1", value: "Freight" },
{ id: "2", value: "Discount" }
]);
self.selectedPricing = ko.observable(pricing ? pricing : "");
self.selectedPricing.subscribe(function (value) {
if (value == "Discount")
{
if (parseFloat(self.cost()) > 0) {
self.cost(-parseFloat(self.cost()));
}
} else {
if (parseFloat(self.cost()) < 0) {
self.cost(-parseFloat(self.cost()));
}
}
});
}
EDIT: вот jsfiddle, что у меня есть: http://jsfiddle.net/tt1mtb19/3/
обратите внимание, что если уже выбран Discount, когда вы вводите в количестве в поле, он остается положительным, независимо от того, что. Он изменяется только на отрицательный, если вы измените его вниз на Фрахт, а затем на Скидку.
вы можете использовать что-то вроде 'self.discount = ko.computed (функция() {возвращение self.cost() * - 1}) ' – stackoverfloweth
умножить его на -1 – dan
@dan Я уже делаю это, что это не то, что мой вопрос был. – luthan