Действие Angular JS при ng-изменении раскрывающегося списка выбора

У меня есть простая таблица с тремя строками и двумя значениями для каждой строки - дата и состояние:

<tbody>
   <tr>
      <td>Red</td>
        <td class="lastModified">{{item.redDate}}</td>
        <td class="status"> 
            <select id ="red" class="form-control" ng-change="update();" ng-model="item.redStatus">
              <option value="" disabled="" selected="" class="ng-binding">Please select the value</option>
              <option ng-selected="step.value === item.redStatus"  ng-repeat="(key, step) in steps">{{ step.title }}</option>
            </select>
       </td>
   </tr>
   <tr>Green</tr>
   <tr>
     ....
   </tr>                    
</tbody>

Итак, простые значения даты и состояния для красного, зеленого и синего. Один в выпадающем списке - статус, второй - просто дата вывода.

При изменении выбранного значения - мне нужно обновить дату сегодняшней датой.

 `$scope.item.redDate = new Date();`

Возможно ли иметь одну функцию, например ng-change="change();" Невозможно отправить с помощью ng-change the ID...


person Sam Lewis    schedule 01.04.2015    source источник
comment
Почему ты не можешь? Вы можете отправить идентификатор в качестве аргумента в методе update (), например ng-change = update ('red'), в чем проблема на самом деле?   -  person Samir Das    schedule 01.04.2015
comment
Ммм... да, и как тогда я мог обновить дату? если это $scope.item.redDate? В JS я сделаю что-то вроде var date = id + 'Date'   -  person Sam Lewis    schedule 01.04.2015
comment
Например, $scope.item[id+'Date'] = new Date();   -  person Samir Das    schedule 01.04.2015
comment
Таким образом, функция должна иметь вид $scope.update= function(id){ alert('id' + id); $scope.item[id+'Date'] = новая дата(); }; Но оповещение говорит, что Id не определен. нг-изменить = обновить (идентификатор);   -  person Sam Lewis    schedule 01.04.2015
comment
О, вы отправляете прямой идентификатор. Я думал, вы передадите имя цвета, например ng-change=update('red');   -  person Samir Das    schedule 01.04.2015
comment
сейчас это 3 элемента, но это динамическая таблица, поэтому количество строк будет изменено. Было бы хорошо иметь одну функцию и отправлять идентификатор или что-то в этом роде и изменять правильное значение. Является ли это возможным?   -  person Sam Lewis    schedule 01.04.2015
comment
Если у вас есть идентификатор типа «красный», то в чем проблема отправить «красный» в качестве аргумента. Это то же самое, что и отправка ID. Хорошо, скажи мне, как ты назовешь id=red, когда он будет динамическим?   -  person Samir Das    schedule 01.04.2015


Ответы (1)


Особая благодарность Самиру Дасу за помощь в поиске решения ng-change="update(id);":

<select id ="red" class="form-control" ng-change="update(id);" ng-model="item.redStatus">
          <option value="" disabled="" selected="" class="ng-binding">Please select the value</option>
          <option ng-selected="step.value === item.redStatus"  ng-repeat="(key, step) in steps">{{ step.title }}</option>
 </select>

Вот контроллер:

$scope.update = function(id){
    id = event.target.id;
    $scope.item[id+'Date'] = new Date();
 };
person Sam Lewis    schedule 02.04.2015