2016-05-26 85 views
1

我想发送课程id到表单按钮的控制器,但它似乎并没有工作。控制器正确记录vm.add.year,但vm.add.course得到undefined。为什么?角JS表单提交不发送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有正确的ID,如果我尝试打印它旁边的按钮像这样:{{course._id}} – sacan

回答

0

对象我会做以下操作来解决这个问题:

添加NG-点击指令按钮:

<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> 

这是继上折角的网站上找到的图案:https://docs.angularjs.org/guide/forms

+0

Okey,现在尝试了这个,但仍然是同样的问题,newItem.year打印正确的值,但newItem.course由于某种原因仍然未定义@brianslattery – sacan

+0

OK @sacan,I错过了一块。尝试我刚刚播种的用于初始化ID的最后更改。 – 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

它没有工作,相同的结果:/ @Danilo – sacan