Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的表格没有';当它';它在ng的内部重复?_Javascript_Angularjs_Rest_Forms - Fatal编程技术网

Javascript 为什么我的表格没有';当它';它在ng的内部重复?

Javascript 为什么我的表格没有';当它';它在ng的内部重复?,javascript,angularjs,rest,forms,Javascript,Angularjs,Rest,Forms,我正在学习AngularJS,我正在制作简单的任务管理应用程序。 应用程序正在连接到外部rest服务。我尝试使用AddTask按钮在活动(任务的容器)中呈现所有任务,但当表单处于循环中时,它不会发送任何内容 以下是我的html代码: <div id="task-group" ng-repeat="activity in activities | filter:query"> <p> <h2>{{activity.activity

我正在学习AngularJS,我正在制作简单的任务管理应用程序。 应用程序正在连接到外部rest服务。我尝试使用AddTask按钮在活动(任务的容器)中呈现所有任务,但当表单处于循环中时,它不会发送任何内容

以下是我的html代码:

<div id="task-group" ng-repeat="activity in activities | filter:query">
        <p>
        <h2>{{activity.activityName}}</h2></p>
        {{activity.activityId}}
        <form name="form" ng-submit="addTask()">
        <input type="text" ng-model="sendTaskName">
        <input type="hidden" name="{{activity.activityId}}" >
            <input type="submit" class="btn-primary" value="Add task">
        </form>
        <ul class="task-list">
            <li ng-repeat="task in activity.tasks">
                <p>{{task.taskName}}</p>
            </li>
        </ul>
    </div>

编辑:@Mickeel帮我解决问题。答案在他的回答中。再次非常感谢

您使用的是
ng repeat
,在每次迭代中,您都使用
ng model
指令绑定输入

这里发生的是,在每次迭代中,都会创建一个新的范围。当您开始在输入中键入时,
sendstaskname
变量在迭代范围内创建,而不是在控制器范围内创建

提交表单时,提交控制器作用域的变量,这就是为什么不发送任何内容

为了解决您的问题,我建议您为
addTask
方法提供参数:

 <div id="task-group" ng-repeat="activity in activities | filter:query">
    <p>
    <h2>{{activity.activityName}}</h2></p>
    {{activity.activityId}}
    <form name="form" ng-submit="addTask(activity.activityId, sendTaskName); sendTaskName = '';">
        <input type="text" ng-model="sendTaskName">
        <input type="submit" class="btn-primary" value="Add task">
    </form>
    <ul class="task-list">
        <li ng-repeat="task in activity.tasks">
            <p>{{task.taskName}}</p>
        </li>
    </ul>
</div>

下一次,使用plunkr,我将能够修复您的代码;)

您应该创建一个plunkr,再现您的问题,并将其发布到此处。您确定没有发送任何内容吗?使用浏览器开发工具网络检查实际请求。页面与API所在的端口完全相同。。8080? 还应该添加一个错误handler@charlietfi我使用的浏览器工具和参数都是空的。该页面位于api以外的其他端口上(api:8080,第6666页)
 <div id="task-group" ng-repeat="activity in activities | filter:query">
    <p>
    <h2>{{activity.activityName}}</h2></p>
    {{activity.activityId}}
    <form name="form" ng-submit="addTask(activity.activityId, sendTaskName); sendTaskName = '';">
        <input type="text" ng-model="sendTaskName">
        <input type="submit" class="btn-primary" value="Add task">
    </form>
    <ul class="task-list">
        <li ng-repeat="task in activity.tasks">
            <p>{{task.taskName}}</p>
        </li>
    </ul>
</div>
$scope.addTask = function(activityId, taskName) {
  $http({
      method: 'POST',
      url: 'http://localhost:8080/add-task',
      data: {taskName: taskName, activityId: activityId}
  }).success(function(){
      getActivities();
  })
}