如何使用 angular 用 json 数据填充 table?
How to populate table with json data using angular?
我已经通过 http 成功加载了 json 数据,但是根据输入的值 'name' 使用此 json 数据填充 table 时遇到问题。下面的 Plunker。
json
[
{
"name": "Tim",
"address": "Road",
"phone": "1234",
"status": "busy"
},
{
"name": "Sue",
"address": "Street",
"phone": "4321",
"status": "available"
}
]
假设我的控制器和应用程序定义正确,我做错了什么?我想输入 Tim 或 Sue,然后用相应的数据填充 table。
angular.js
$http.get('data.json').
success(function(data) {
$scope.jsonData = data;
alert("Success");
}).
error(function(data) {
alert("Invalid URL");
});
$scope.clickButton = function(enteredValue) {
$scope.items = $scope.jsonData;
angular.forEach($scope.items[enteredValue], function (item, key) {
$scope.results.push({
name: enteredValue,
address: item.address,
phone: item.phone,
status: item.status
});
});
jsp
<table>
<tr>
<td><label>Name:</label></td>
<td>
<input id="pName" name="pName" type="text" data-ng-model="enteredValue" />
</td>
</tr>
<button class="btn btn-primary" data-ng-click='clickButton(enteredValue)'>Search</button>
<table>
<tr data-ng-repeat="result in results">
<td data-title="'ID'">{{result.status}}</td>
<td data-title="'Name'">{{result.name}}</td>
<td data-title="'Status'" >{{result.address}}</td>
<td data-title="'Start Date'" >{{result.phone}}</td>
</tr>
</table>
试试这个,问题是在 json 文件中,enteredValue(在这种情况下是某人的名字)不是对象中的有效键,所以 angulars foreach 永远不会执行,因为你的 $scope.items[enteredValue] 始终未定义:
$http.get('data.json')
.success(function(data) {
$scope.jsonData = data;
alert("Success");
})
.error(function(data) {
alert("Invalid URL");
});
$scope.clickButton = function(enteredValue) {
$scope.items = $scope.jsonData;
angular.forEach($scope.items, function (item) {
if(item.name === enteredValue){
$scope.results.push({
name: enteredValue,
address: item.address,
phone: item.phone,
status: item.status
});
}
});
};
我已经更新了你的 plunkr:
http://plnkr.co/edit/YRo8SugTDQ54NIvUHDVy
我已经通过 http 成功加载了 json 数据,但是根据输入的值 'name' 使用此 json 数据填充 table 时遇到问题。下面的 Plunker。
json
[
{
"name": "Tim",
"address": "Road",
"phone": "1234",
"status": "busy"
},
{
"name": "Sue",
"address": "Street",
"phone": "4321",
"status": "available"
}
]
假设我的控制器和应用程序定义正确,我做错了什么?我想输入 Tim 或 Sue,然后用相应的数据填充 table。
angular.js
$http.get('data.json').
success(function(data) {
$scope.jsonData = data;
alert("Success");
}).
error(function(data) {
alert("Invalid URL");
});
$scope.clickButton = function(enteredValue) {
$scope.items = $scope.jsonData;
angular.forEach($scope.items[enteredValue], function (item, key) {
$scope.results.push({
name: enteredValue,
address: item.address,
phone: item.phone,
status: item.status
});
});
jsp
<table>
<tr>
<td><label>Name:</label></td>
<td>
<input id="pName" name="pName" type="text" data-ng-model="enteredValue" />
</td>
</tr>
<button class="btn btn-primary" data-ng-click='clickButton(enteredValue)'>Search</button>
<table>
<tr data-ng-repeat="result in results">
<td data-title="'ID'">{{result.status}}</td>
<td data-title="'Name'">{{result.name}}</td>
<td data-title="'Status'" >{{result.address}}</td>
<td data-title="'Start Date'" >{{result.phone}}</td>
</tr>
</table>
试试这个,问题是在 json 文件中,enteredValue(在这种情况下是某人的名字)不是对象中的有效键,所以 angulars foreach 永远不会执行,因为你的 $scope.items[enteredValue] 始终未定义:
$http.get('data.json')
.success(function(data) {
$scope.jsonData = data;
alert("Success");
})
.error(function(data) {
alert("Invalid URL");
});
$scope.clickButton = function(enteredValue) {
$scope.items = $scope.jsonData;
angular.forEach($scope.items, function (item) {
if(item.name === enteredValue){
$scope.results.push({
name: enteredValue,
address: item.address,
phone: item.phone,
status: item.status
});
}
});
};
我已经更新了你的 plunkr: http://plnkr.co/edit/YRo8SugTDQ54NIvUHDVy