试图从输入和复选框中获取ID,但继续获取未定义的angularjs

时间:2015-01-01 15:02:04

标签: angularjs

我正在尝试从输入框和复选框中获取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);
    });
};

请求有效负载

enter image description here

我的目标是能够获得&#34; taskId&#34; &#34;已完成&#34;要传递给angular和angular的值将值发送到laravel的控制器,该控制器根据taskId更新数据库中的复选框值。但如上图所示,我只能完成&#34;完成&#34;值。

1 个答案:

答案 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,则无需手动设置值。

干杯!