Это предельное упрощение того, что я хочу построить (калькулятор процентов по процентам). У меня три поля. Всякий раз, когда одно поле изменилось, я хочу, чтобы другие, чтобы изменить для того, чтобы удовлетворить это алгебраическое уравнение:Связывание данных внутри объекта и с DOM
A = B * C
B = A/C
C = A/B
Я думаю, что я хочу, чтобы связать эти значения с объектом, но я не уверен, как идти об этом , Вот это настроить я до сих пор:
var binder = {
a: 2,
b: 1,
c: 1
};
$('input[type=number]').on('change', function() {
var id = $(this).attr('id');
var value = id.val();
binder[id] = Number($(this).val());
});
На данный момент я установить соответствующий ключ в объекте к значению текущего активного поля. Я мог работать через кучу case()
утверждений типа:
switch(id) {
case a :
binder.b = $(this).val()/binder.c;
binder.c = $(this).val()/binder.b;
break;
etc.
}
Я также необходимо обновить значения полей. Это кажется неустойчивым, особенно когда число полей растет, и вычисление становится более сложным. Мой вопрос тогда двоякий:
Как связать значения полей с объектом?
Как связать значения объекта друг с другом?
Есть ряд библиотек, которые обрабатывают сантехнику для такого рода вещи. Я поклонник Knockout.js, http://knockoutjs.com/, который использует ViewModels для привязки к вашим элементам DOM и предоставления логики поддержки. Просто создайте объекты, необходимые для обработки вычислений, и пусть KO справится с привязкой. – dbugger