2016-05-26 5 views
1

Я пытаюсь отправить курс id на контроллер в форме кнопки, но он не работает. Контроллер регистрирует vm.add.year правильно, но vm.add.course получает undefined. Зачем?Angular JS Forms submit не отправляет ID

index.html:

<form method="post" ng-submit="vm.addCourseToYear()"> 
     <table class="table"> 

      <tr ng-repeat="course in vm.courses | filter:search"> 
       <td>{{course.courseName}}</td> 

       <td><select id="addCourse" name="addCourse" class="form-control" ng-model="vm.add.year" required> 
        <option value="year1"> Year1 </option> 
       </select></td> 

       <td><input style="display:none" ng-value="course._id" ng-model="vm.add.course"> 
        <button type="submit" class="btn btn-primary" id="{{course._id}}">Add</button> 
       </td> 
      </tr> 
     </table> 
    </form> 

index.controller.js

function addCourseToYear(){ 
    console.log(vm.add.course); 
    console.log(vm.add.year); 
}; 
+0

Где вы задали значение для 'course._id'? – itzmukeshy7

+0

Я получаю его из базы данных. Course._id имеет правильный идентификатор, если я попытаюсь напечатать его рядом с кнопкой следующим образом: {{course._id}} – sacan

ответ

0

Я бы сделать следующее, чтобы исправить это:

Добавить нг нажмите директиву кнопки:

<button type="submit" 
     class="btn btn-primary" 
     ng-click="vm.addCourseToYear(vm.add)" 
     id="{{course._id}}">Add</button> 

Удалить действие формы, оставив только форму:

<form> 

Изменение функции взять параметр:

function addCourseToYear(newItem){ 
    console.log(newItem.course); 
    console.log(newItem.year); 
}; 

Изменить это для инициализации vm.add.course в course._id:

<td> 
    <input style="display:none" ng-init="vm.add.course = course._id" ng-model="vm.add.course"> 
    <button type="submit" class="btn btn-primary" id="{{course._id}}">Add</button> 
</td> 

Это следует закономерности, найденные на месте ANGULAR в: https://docs.angularjs.org/guide/forms

+0

Okey, попробовал это сейчас, но по-прежнему та же проблема, newItem.year печатает правильное значение, но newItem.course по-прежнему не определено по какой-либо причине @brianslattery – sacan

+0

OK @sacan, I пропустил один кусок. Попробуйте последнее изменение, которое я просто выделил для инициализации идентификатора. – Brian

+0

Да, это сработало! : D Большое вам спасибо, это привело меня к сумасшедшей @brianslattery – sacan

0

попробуйте изменить код следующим образом:

<form method="post" ng-submit="vm.addCourseToYear(vm.add.course._id)">

надеюсь, что это решает проблему ..)

+0

Это не сработало, по-прежнему не определено:/@ seekers01 – sacan

0

display:none удаляет объект из из, изменить его на visibility: hidden;position:absolute

<input style="visibility:hidden;position:absolute;" ng-value="course._id" ng-model="vm.add.course"> 
+0

It не работает, тот же результат:/@Danilo – sacan

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