使用复选框将JSON结果解析为对象
Parsing JSON result to object by using checkbox
我已经将一个JSON列表加载到一个表中,我想将一个或多个JSON结果解析到一个对象中,这样我就可以将其发送到服务器。
到目前为止,我的桌子是这样的:
HTML
<tr ng-repeat="t in student">
<td ng-model="herkanserNaam">{{ t.Name }}</td>
<td>{{ t.City }}</td>
<td>
<div class="checkbox" ng-click="laatzien(herkanserNaam, herkanserCheck)" ng-model="herkanserCheck">
<label>
<input type="checkbox">
</label>
</div>
</td>
</tr>
控制器
$scope.laatzien = function(name, active) {
var herkanser = [{
"name" : name,
"active" : false
}];
console.log(herkanser);
}
如何使用复选框检查一个或多个结果并将数据(t.Name)保存到对象中?到目前为止,函数laatzien()正在返回herkanser中定义的空值。
laatzien
方法失败的原因是由于您使用指令的方式。让我们使用您提供的示例来激发laatzien
方法。
HTML
<tr ng-repeat="student in students">
<td>{{ student.Name }}</td>
<td>{{ student.City }}</td>
<td>van</td>
<td>Huis</td>
<td>j.huis@student.han.nl</td>
<td>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="student.isActive" ng-change="laatzien(student)">
</label>
</div>
</td>
</tr>
Javascript
$scope.laatzien = function (student) {
var herkanser = [{
"name": student.name,
"active": student.isActive
}];
console.log(herkanser);
}
出于可读性的目的,我在您的示例中做了一些有主见的更改,其他更改是为了使指令按预期启动。以下是对您的片段所做的更改。
- 已将
student
阵列重命名为students
。这需要将控制器从$scope.student
更改为$scope.students
- 将
t
对象重命名为student
- 从div中删除了
ng-click
指令 - 在复选框上添加了
ng-change
指令。现在,当您单击复选框时,您的laatzien
方法应该会激发 - 将
isActive
属性添加到您的student
中。在laatzien
方法内部,您现在可以检查复选框的状态。如果选中复选框,则为student.isActive = true
。如果未选中复选框,则为student.isActive = false
从您的代码中,您似乎想要构建"已检查学生列表"并将其发送到服务器。换句话说,你想要的是允许用户查看多个学生,并在最后收集所有检查过的内容并将其发送到服务器。
如果是这种情况,那么你在复选框上点击ng的策略是错误的。
您需要的是将您的复选框绑定到您的$scope模型。例如:
<input type="checkbox" ng-model="t.isChecked" ng-true-value="true" ng-false-value="false'">
当用户选中学生的复选框时。您的模型将自动更新。
要收集要通过服务器发送的数据,您需要点击提交按钮。在事件处理程序中,只需循环遍历$scope"students"模型中的每个students,只保存那些具有isChecked属性的students以发送到服务器。
希望这能有所帮助!
您可以制作一个函数,将软项推送到对象中,比如…
$scope.students = [
{
"name":"John",
"city":"Boston"
},
{
"name":"Amy",
"city":"Dallas"
}
]
$scope.activeObj = [];
$scope.laatzien = function(obj) {
if($.inArray(obj, $scope.activeObj) == -1) {
$scope.activeObj.push(obj);
} else {
var index = $scope.activeObj.indexOf(obj);
$scope.activeObj.splice(index, 1);
}
}
http://jsfiddle.net/5fcnazb2/
相关文章:
- 对象拟合:获取结果尺寸
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- JQuery Deferred Ajax,将结果保存在调用对象中
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 返回带有筛选结果的新JSON对象
- 使用函数for循环遍历对象以更改值,然后返回结果
- 为什么纬度结果对象从谷歌地图 API 更改
- 意外结果,在 ASP.Net 中解析 JSON 对象的数组
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- 用逗号分隔返回结果中的对象
- jQuery 循环 JSON 结果,对象作为值
- 正在调用对象中设置的匿名函数,但未得到预期结果
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 剑道角's自动完成在结果中显示对象
- 使用lodash'扩展JS对象实例;s的extend方法会导致奇怪的结果
- 从 $.post() 获取 JSON 对象结果
- 使用 JavaScript 将多个对象结果集的数组合并到单个数组中
- 有选择地返回JSON对象结果
- Json字符串javascript对象结果不匹配
- 提取 JSON 对象结果的某些部分