2016-11-14 2 views
0

Простой вопрос, но я stucked ...Javascript устанавливается переменная условной в инициализации

Я хочу, чтобы установить plusmin на инициализации в зависимости от defaultQty.

Так это defaultQty = 1 (из другого целого числа, как 2 или 3), то plusmin должен быть 1.

Если это не является целым числом (например, 0.5) plusmin должен быть 0,1

define([ 
    'ko', 
    'uiComponent' 
], function (ko, Component) { 
    'use strict'; 

    return Component.extend({ 
     initialize: function() { 
      //initialize parent Component 
      this._super(); 
      this.qty = ko.observable(this.defaultQty); 
      this.plusmin = 0.1; 
     }, 

     decreaseQty: function() { 
      var newQty = this.qty() - this.plusmin; 
      if (newQty < this.defaultQty) { 
       newQty = this.defaultQty; 
      } 
      this.qty(newQty); 
     }, 

     increaseQty: function() { 
      var newQty = this.qty() + this.plusmin; 
      this.qty(newQty); 
     } 

    }); 
}); 
+0

это.plusmin = (this.qty == Math.floor (this.qty))? 1: 0,1 – flowtron

ответ

3

this.plusmin = (this.defaultQty % 1 === 0) ? 1 : 0.1;

+0

Да! Это оно! через 4 минуты я могу принять ответ. Но когда я перехожу на 0,8, то в поле ввода появляется 0,7999999999999999. Есть ли способ (условный) округлить число до 0,8, если он не является целым числом? –

+0

Не уверен, что вам нужно здесь. JavaScript становится смешным с точностью чисел такими способами, как выше, но не должен влиять на ответ на этот вопрос. Если это совершенно новая проблема, просто задайте ее как новый вопрос. – andi

+0

Используется var newQty = Math.round ((this.qty() - this.plusmin) * 100)/100; делать работу :-) –

0

Вы можете использовать модуль оператор (%), который возвращает остаток после деления:

(defaultQty % 1) > 0 ? plusmin = 0.1 : plusmin = 1; 
Смежные вопросы