我正在尝试从输入框和复选框中获取ID,但我一直未定义。有效负载中显示的唯一值是复选框。
HTML
<li class="ui-state-default" ng-repeat="todo in todos">
<label>
<span ng-click="toggleChecked(todo.taskId, todo.done)">
<input type="hidden" name="taskId" ng-model="todo.taskId" value="todo.taskId" />
<input type="checkbox" name="done[]" ng-model="todo.done" value="todo.done" ng-checked="todo.done" />
</span>
<span ng-class="{'done':todo.done}" ng-cloak>
<input type="text" ng-model="todo.title" class="todoList" />
<span class="label label-success finished">Done</span>
</span>
</label>
</li>
angularjs
$scope.toggleChecked = function(taskId, done) {
$scope.done = !$scope.done;
$scope.todo = {
taskId: $scope.taskId,
done: $scope.done
};
$http.post('/dashboard/checked', $scope.todo).success(function() {
alert($scope.todo);
});
};
请求有效负载
我的目标是能够获得&#34; taskId&#34; 和&#34;已完成&#34;要传递给angular和angular的值将值发送到laravel的控制器,该控制器根据taskId更新数据库中的复选框值。但如上图所示,我只能完成&#34;完成&#34;值。
答案 0 :(得分:1)
您的代码正在进行两次点击,这会将您的值重置为false,因此请将您的代码更改为:
<li class="ui-state-default" ng-repeat="todo in todos">
<label>
<input type="checkbox" name="done" ng-model="todo.done" ng-change="toggleChecked(todo)" />
<span ng-class="{'done':todo.done}" ng-cloak>
<input type="text" ng-model="todo.title" class="todoList" />
<span class="label label-success finished">Done</span>
</span>
</label>
</li>
你的控制器代码:
$scope.toggleChecked = function(todo) {
$http.post('/dashboard/checked', todo).success(function() {
alert(todo);
});
};
您可以直接使用ng-change
来查看/取消选中项目。此外,如果您使用ng-model
,则无需手动设置值。
干杯!