Vue.js возвращает NaN вместо числа, которое я хочу - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть 2 типа ввода, firstNumber и secondNumber.И он возвращает firstNumber * secondNumber в v-модели.И затем он ищет этот номер в базе данных, и когда вы нажимаете кнопку «Отправить», он возвращает значение этого идентификатора «номер».Это отлично работает.Но у меня также есть список выбора с 3 пунктами.Когда вы щелкаете по элементу, он ищет это значение "nos", у которого есть номер 177 в базе данных, а затем возвращает число 177 этого элемента "nos", или он должен сделать это, но возвращает NaN.

calc: '' - это то, что должно возвращать ID + элемент "nos" с номером 177. И calc это v-model = "calc".И в data calc есть calc: '',

                 export default {
                  data(){
                  return {
                 firstNumber: '',
                secondNumber: '',
               calc: '',
              loading: false,

                items: [    
              'nos', 'pp', 'pre'
                ],
              selected: '',
               price: '',
              picked: ''


              }

             },
           computed: {
           result: function(){
          return this.firstNumber * this.secondNumber
            },
          },
           methods: {
            sortBy: function(){
            this.selected = ''

             },

            getCost: function () {
            this.loading = true


           this.$http.get
      ('https://sheetdb.io/api/v1/zxl0nnytr1z32/search?m2=' + 
        this.result).then((costType) => {

        this.calc = costType.data[0].
        sortBy * this.result * 2 + 'Kr.'
          this.loading = false

Когда я беру this.calc = costType.[0].nos вместо этого, я получаю число.Но когда у меня sortBy, возвращается NaN.this.selected - это то, что вы выбираете в списке выбора.Когда вы выбираете nos, this.selected = 'nos' должен возвращать то же самое, что и costType.[0].nos, но это не так.

Вот мой полный код:

         <template>
      <div>

           <v-app id="inspire">
            <div id="e3">

                <v-card>

             <img src="../assets/measurementBG.jpg" alt="">
             <v-container fill-height fluid>
              <v-layout fill-height>
          <v-flex xs12 align-end flexbox>
            <span class="headline" style="color: black">Takmått</span>
          </v-flex>
        </v-layout>
      </v-container>

      <v-flex xs12 sm6 md1>
        <v-text-field
          label="Solo"
         single-line
         solo
        ></v-text-field>
      </v-flex>
     -->

            <v-container fluid grid-list-lg>
                <v-layout row wrap>
                    <v-flex xs12>
                <v-card color="white" class="black--text">
                            <v-card-title primary-title>
                                <v-select box white

                                  v-model="selected" 
                                  v-on:change="sortBy"
                                  :items="items"
                                   item-value="text"

                                     color="dark"
                                  label="Välj taktyp.." 

                                ></v-select>

                                <v-text-field solo 

                                mask="######" 
                                label="Längd" 
                            id="firstNumber" 
                            v-model="firstNumber" 
                            class="whatevercolor--text"
                              color="dark"
                            messages ='Avrunda till meter' 

                       ></v-text-field>

                       <v-text-field solo
                    mask="#####" 
                        label="Bredd" 
                      id="secondNumber" 
                        v-model="secondNumber"
                               color="dark"
                            messages='Avrunda till meter'
                    ></v-text-field><br>

                        <v-text-field 
                        class="result" 
                                v-model="result"
                                      color="dark"
                                    messages='m2/sida'
                                    style="margin-top: 1rem;"
                                ></v-text-field>

                        <v-text-field 
                        class="calculate"
                            v-model="calc"
                              color="dark"
                    messages='Priser exkl. moms med f.n. 25%.'
                        ></v-text-field>
                </v-card-title>
                <v-card-actions>
        <v-btn :loading="loading" :disabled="loading" color="blu- 
                   grey" class="white--text"
                     @click="getCost">Hämta pris 
                    <v-icon right dark>cloud_download</v-icon>
                            </v-btn>
                            {{ calc }}
                            </v-card-actions>
                    </v-card>
                    </v-flex>
                        </v-layout>
                    </v-container>
                    </v-card>
                    </div>
                    </v-app>
                        </div>

                        </template>

         <script>
        export default {
         data(){
        return {
        firstNumber: '',
        secondNumber: '',
        calc: '',
        loading: false,

        items: [    
          'nos', 'pp', 'pre'
        ],
        selected: '',
        price: '',
        picked: ''

           }

        },
    computed: {
    result: function(){
        return this.firstNumber * this.secondNumber
    },

       },
      methods: {
         sortBy: function(){
       this.selected= ''

      },

   getCost: function () {
        this.loading = true
      this.$http.get('https://sheetdb.io/api/v1/zxl0nnytr1z32/search?m2=' + 
      this.result).then((costType) => {

           console.log(costType.body);
            const roof = this.value;
              console.log(roof);
          this.price = costType.data[0].roof
         this.calc = costType.data[0].sortBy * this.result * 2 + ' Kr.'
          this.loading = false
          console.log(costType.data[0].roof);
            console.log('Pris: ' + roof);
            console.log('Tak: ' + roof);
            console.log('Summa: ' + this.calc);
            console.log('Pris: ' + costType.data[0].selected);  

       });

      }

         }

}
...