Я работаю над приборной панелью, чтобы сделать несколько простых расчетов на основе пользовательского ввода. После того, как я неоднократно просил Google, но безуспешно, помочь мне с моей проблемой, я надеюсь, что вы сможете указать мне верное направление.
Так как файл app.js
моего проекта содержит 300 строк кода, я объясню проблему и предоставлю вам скрипту Codepen вместо того, чтобы копировать / вставлять все здесь.
Ссылка на Codepen: https://codepen.io/bauhausweb/project/editor/ZqnkEO#
Я новичок в JS и Vue, я играю с ним, используя редакторы кода на лету (Codepen), а не ES16, CLI и эти сложные вещи. Пожалуйста, имейте это в виду, когда публикуете свои ответы, так как я нахожу синтаксис достаточно сложным для понимания.
Фактическая проблема: Вычисленные свойства revenuesFirst
, revenuesSecond
и totalCost
из компонентов # 1 и # 2 не передаются третьему компоненту. Когда я консоль регистрирую их в 3-м компоненте, в результате получается empty string
, а когда приложение выполняет рендеринг, поля формы («Прибыль Y1» и «Прибыль Y2») отображают 0
вместо правильной суммы. Хотя внутри их соответствующих компонентов вычисленные свойства работают нормально.
Для удобства чтения я вставляю здесь только третий компонент, который ссылается на вычисленные свойства компонентов # 1 и # 2 как props
. Пожалуйста, взгляните на Codepen, чтобы увидеть все приложение: https://codepen.io/bauhausweb/project/editor/ZqnkEO#
Vue.component('result-output', {
props: ["revenuesFirst","revenuesSecond","totalCost"],
data: function () {
return {
rF: this.revenuesFirst,
rS: this.revenuesSecond,
tC: this.totalCost
}
},
computed: {
calculatedProfitsY1: function(e) {
let cp1 = this.rF - this.tC;
return cp1;
},
calculatedProfitsY2: function(e) {
let cp2 = this.rS - this.tC;
return cp2;
}
},
template: `<form action="">
<h2>Profits</h2>
<b-input-group size="sm" prepend="Profits Y1" class="mb-2">
<b-form-input readonly v-bind:value="calculatedProfitsY1"></b-form-input>
<b-input-group-append is-text>€</b-input-group-append>
</b-input-group>
<b-input-group size="sm" prepend="Profits Y2" class="mb-2">
<b-form-input readonly v-bind:value="calculatedProfitsY2"></b-form-input>
<b-input-group-append is-text>€</b-input-group-append>
</b-input-group>
</form>`
})
Почему вышеуказанного кода недостаточно для «импорта» / повторного использования / использования revenuesFirst
, revenuesSecond
и totalCost
из первого и второго компонента в третий компонент <result-output></result-output>
? Когда вы играете с приложением на Codepen , все работает отлично - за исключением для окончательного расчета "Прибыль".
Я благодарю вас за то, что вы взяли время помочь и оценить ваш вклад!