2013-12-06 4 views
0

У меня есть директива форматирования, использующая MomentJS, которая отлично работает на своем. Он не пытается поддерживать привязки, а предназначен только для выделения даты форматирования. Когда я вставляю его в другую директиву, которая, в свою очередь, использует директиву ng-repeat, она больше не работает. Что нужно изменить, чтобы он мог отображать форматированную дату?Вложенные директивы не отображаются

http://jsfiddle.net/P2cu6/3/

angular.module('test').directive('payPeriodDropDown', function() { 
     return { 
     restrict: 'EA', 
     scope: { 
      sName: '@', 
      sClass: '@' 
     }, 
     link: function ($scope, element, attr) { 
      $scope.timePeriods = ranges; 
     }, 
     template: '<select name="{{sName}}" id="{{sName}}" class="{{sClass}}">' + 
       '<option ng-repeat="period in timePeriods" value="{{$index}}">' + 
        '<moment-format val="{{period.start}}" format="YYYY" ng-transclude></moment-format> - ' + 
        '<moment-format val="{{period.end}}" format="YYYY" ng-transclude></moment-format>' + 
       '</option>' + 
      '</select>' 
    } 
}); 

Спасибо!

ответ

1

Я не могу решить вашу проблему напрямую, но если вы используете фильтр для моментаFormat вместо директивы, это сработает.

см http://jsfiddle.net/P2cu6/6/

angular.module('test').filter('momentFormat', function() { 
    return function(input, format) { 
      var regexEpic = /^\d+$/ig; 
      var val = (regexEpic.test(input)) ? window.parseInt(input) : input; 
      return moment(val).format(format); 
     } 
    }); 

приветы

+0

это гораздо чище решение. –

+0

О, интересно. Я преподавал себя Angular и еще не добирался до фильтров. Мне нравится эта идея, как упоминал Артур, это выглядит как более чистый способ реализации. – risingfish

Смежные вопросы