2017-01-06 7 views
1

Я пытаюсь написать что-то, что позволяет мне редактировать записи с датами в них, у меня есть это в моей таблице:Используя угловой DatePicker с нг-повтора

 <tr ng-repeat="event in eventFixtures track by $index"> 
      <td>{{event.date | date: 'dd/MM/yyyy'}}</td> 
      <td> 
       <div class="row"> 
        <div class="col-md-6"> 
         <p class="input-group"> 
          <input type="text" 
            class="form-control" 
            ng-model="event.date" 
            is-open="fixture{{$index}}popup" 
            ng-click="openFixturePopup($index)"/> 
         </p> 
        </div> 
       </div> 
      </td> 
     </tr> 

Однако, когда я иду нажать на одну ящиков ввода не отображается.

Открытая функция здесь:

$scope.openFixturePopup = function(fixture) { 
    $scope["fixture"+fixture+"popup"] = true; 
}; 

Переменные delcared следующим образом:

for(var i = 0; i < data.length; i++) { 
     $scope["fixture"+i+"popup"] = false; 
    } 

Из имеющих значения переменных распечатывается над столом, они меняются и если я создаю вход, который связан с конкретным всплывающим окном, например например:

<div class="row"> 
    <div class="col-md-6"> 
     <p class="input-group"> 
      <input type="text" 
        class="form-control" 
        uib-datepicker-popup="{{format}}" 
        ng-model="testDate" 
        is-open="fixture0popup" 
        ng-click="openFixturePopup(0)"/> 
     </p> 
    </div> 
</div> 

Он отлично работает.

Кто-нибудь знает, что может быть причиной этого?

ответ

1

У меня есть подозрение, что попытка использования интерполяции для имени переменной - это то, что отбрасывает это. Я пробовал множество вещей, таких как $scope[dynamicVarName], $scope.$eval([dynamicVarName]), и другие безрезультатно. Я не могу сказать наверняка, что это ваша проблема, но я думаю, что нашел решение, которое вы можете попробовать.

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

Вот что код может выглядеть следующим образом:

var app = angular.module("myApp", []) 
 
.controller("myCtrl", function ($scope) { 
 
    $scope.eventFixtures = [ 
 
    {name: "1", date: "1-1-01"}, 
 
    {name: "2", date: "2-2-02"}, 
 
    {name: "3", date: "3-3-03"}, 
 
    {name: "4", date: "4-4-04"}, 
 
    {name: "5", date: "5-5-05"} 
 
    ]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <table> 
 
    <tr ng-repeat="event in eventFixtures track by $index"> 
 
     <td>{{event.date | date: 'dd/MM/yyyy'}}</td> 
 
     <td> 
 
     <div class="row"> 
 
      <div class="col-md-6"> 
 
      <p class="input-group"> 
 
       <input type="text" 
 
        class="form-control" 
 
        ng-model="event.date" 
 
        is-open="{{event.isOpen}}" 
 
        ng-blur="event.isOpen = false;" 
 
        ng-focus="event.isOpen = true;"/> 
 
       isOpen? {{event.isOpen || false}} 
 
      </p> 
 
      </div> 
 
     </div> 
 
     </td> 
 
    </tr> 
 
    </table> 
 
</div>

+0

Это работает! с небольшим редактированием: ' <входного типа = "текст" класса = "форма-контроль" UIB-DatePicker-всплывающее окно = "дд-MMMM-гггг" нг-модель = "event.date" IS- open = "event.isOpen" ng-click = "event.isOpen = true;" /> ' Однако у меня сейчас есть новая проблема, когда дата не отображается в поле, когда она сначала загружается, он делает, когда я выбираю новый, хотя это странно ... Спасибо, хотя! – MysteriousWaffle

+0

@MysteriousWaffle Мне любопытно, что дата не появляется, когда она впервые загружается. Не могли бы вы создать новый вопрос и повторить проблему? Я никогда не пользовался угловым бутстрапом или дампикером (я использую jQueryUI), поэтому я не знаком с тем, что все должно быть включено, чтобы получить функциональность, но я всегда могу ткнуть и поработать с демо, чтобы заставить его работать. – mhodges

+0

Выполнено: https://stackoverflow.com/questions/41515151/date-not-showing-up-in-angular-bootstrap-datepicker – MysteriousWaffle

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

  • Нет связанных вопросов^_^