2016-11-16 3 views
1

Я пытаюсь стиль только десятые выглядеть так же, как это:Могу ли я просто создать десятичные числа числа в угловом?

enter image description here

Не имел успеха, я думаю, что мне нужно, чтобы сделать свой собственный фильтр, попробовал, но не имел успеха ни , Я думаю, это потому, что я использую его внутри состояния.

Вот код, я использую для номера:

<h2><sup>$</sup>{{salary | number:0}}<sub>.00</sub></h2> 

Внутри .app IAM, используя эту область:

$ scope.salary = 9000;

Вещь - это номер, который может быть любым размером зарплаты пользователя, он получает номер от ввода, в других местах у меня больше чисел с десятичными знаками.

Возможные решения: только

  • Извлечение десятые из значения и напечатать их в де тега.
  • Используйте фильтр, чтобы сделать это?
+1

Это похоже на хороший пример для директивы IMO. – probablyup

+2

Самый простой способ - как вы сказали, просто разделить целочисленные значения из десятичных знаков. Фильтр вам действительно не поможет. Директива, вероятно, будет лучше, но может быть излишней. Я спрашивал себя, как часто вы увидите, что сталкиваетесь с той же ситуацией. Если бы не один раз, я бы пошел с директивой. –

ответ

1

Используйте директиву, которая будет разделять сумму и генерировать правильный HTML. For example:

app.directive('salary', function(){ 
    return { 
     restrict: 'E' 
     , scope: { 
      salary: '@' 
     } 
     , controller: controller 
     , controllerAs: 'dvm' 
     , bindToController: true 
     , template: '<h2><sup>$</sup>{{ dvm.dollar }}<sub>.{{ dvm.cents }}</sub></h2>' 
    }; 

    function controller(){ 
    var parts = parseFloat(this.salary).toFixed(2).split(/\./); 
    this.dollar = parts[0]; 
    this.cents = parts[1]; 
    } 
}); 
+0

Этот шов будет очень приятным и просто тем, что я ищу. Где shold я вставляю этот код? У меня есть .state, затем view: {} внутри просмотров у меня есть контроллер. Я вставляю его внутри контроллера? –

0

Самым простым решением было бы разделить из числа в это дробная часть и целое число часть:

var number = 90000.99111; 
 

 
console.log(number % 1);

Используйте это в вашем контроллере, и разделить переменную области видимости в объект:

$scope.salary = { 
    whole: salary, 
    decimal: salary % 1 
    } 

Protip: Использование такого объекта лучше, чем использование двух переменных области для производительности.

+0

Извините за мое невежество, но как я могу использовать его в представлении? заработная плата: десятичное? –

+1

Вы можете использовать его как 'зарплата.decimal' – nikjohn

+0

Здравствуйте, я обнаружил что-то в вашей области: десятичные знаки неверны, это связано с тем, что мы только перемещаем точку. Пример, если у нас есть 34.56 с этим решением, результат будет 0,34, что неверно. Это должно быть .56 Думаю, мне нужно преобразовать результат в stric, разрезать его, а затем вернуть обратно к значению. –