2014-10-25 2 views
0

У меня есть база данных с множеством элементов, где мне нужно взять дату item.expire и сравнить ее с Сегодняшняя дата Итак, я получаю что-то вроде «5 дней назад до истечения срока действия». ,

я получил все, что работает, но я не знаю, как передать мой номер «5 дней назад, прежде чем истечет» К моему нг-повтора.

.controller('itemController', ['$scope', '$http', 'Items', 
    function($scope, $http, Items) { 

     var promise = Items.get(); 
     promise.then(
      function(itemData) { 

       //Return data object to the ng-repeat 
       $scope.items = itemData.data; 


       angular.forEach(itemData.data, function(oneItem) { 

        var currentDate = moment().format("YYYY-MM-DD"); 
        var a = moment(oneItem.expire); 
        var b = moment(currentDate); 

        $scope.items.expire = a.diff(b, 'days'); 
       }); 
      }, 
      function(errorItemData) { 
       $log.error('failure loading item', errorItemData); 
       console.log("error"); 
      }); 

мой HTML

<tr ng-repeat="item in items | filter:searchItem" class="certificateListItems"> 


      <td> @{{ item.name }}</td> 
      <td class="hidden-xs hidden-sm">@{{ item.description }}</td> 
      <td class="hidden-xs hidden-sm">@{{ item.issuer }}</td> 

      <td><a href="{{ URL::to('items/view_file/') }}/@{{ item.id }} " target="_blank">Download</a></td> 

      <td><img ng-click="showBox(item)" ng-src="{{ asset('assets/img/icons/mail_outgoing.png') }}" 
        alt="Send mail"/></td> 
      <td> 
       @{{ item.expire }} 
      </td> 
      <td>1st: @{{ item.alarm1 | date : 'shortDate' }}<br>2nd: @{{ item.alarm2 | date : 'shortDate' }}</td> 
      <td> 
       <a ng-click="editItem(item)" href=""><span class="glyphicon glyphicon-pencil"></span></a> - 
       <a ng-click="deleteItem(item)" href=""><span class="glyphicon glyphicon-trash"></span></a> 
      </td> 

     </tr> 

ответ

1

Каждый элемент имеет свой собственный срок годности. Но ваш цикл сохраняет время истечения в одной переменной:

// $scope.items is an array of items. 
$scope.items = itemData.data; 

angular.forEach(itemData.data, function(oneItem) { 

    var currentDate = moment().format("YYYY-MM-DD"); 
    var a = moment(oneItem.expire); 
    var b = moment(currentDate); 

    // this sets a property 'exire' on the array of data 
    $scope.items.expire = a.diff(b, 'days'); 
}); 

Это должно быть вместо этого

$scope.items = itemData.data; 

angular.forEach(itemData.data, function(oneItem) { 

    var currentDate = moment().format("YYYY-MM-DD"); 
    var a = moment(oneItem.expire); 
    var b = moment(currentDate); 

    // this sets a property 'exire' on the array of data 
    oneItem.daysBeforeExpiration = a.diff(b, 'days'); 
}); 

и в HTML:

{{ item.daysBeforeExpiration }} 
+0

Wow JB, спасибо, это в течение нескольких дней была головная боль :) – sij

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