我没有让搜索过滤器正常工作。
项目模板:
<h3>Projekte</h3>
Search: <input ng-model="searchText">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Title</th>
<th>Long Title</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="(key, project) in projects | filter:searchText">
<td>{{key}}</td>
<td>{{project.title}}</td>
<td>{{project.longTitle}}</td>
<td><button class="btn btn-default" ng-click="edit()"><i class="fa fa-pencil"></i></button></td>
</tr>
</tbody>
</table>
控制器:
var secProjects = function ($http,$scope, $modal) {
$http.post('php/data.php').
success(function(data) {
$scope.projects = data;
})
}
PHP:
while($row = mysql_fetch_object($result)){
$data[$row->ID] = array ('id'=>$row->ID,'title'=>$row->Title,'longTitle'=>$row->TitleLong, 'textDE'=>$row->DescriptionDE,'start'=>$row->DateStart,'end'=>$row->DateEnd);
}
echo json_encode($data);
我希望你能帮助我:(我认为原因在于我在我的范围内得到数据的方式。但我不确定。
编辑:更改PHP解决了问题:
$data = array();
while($row = mysql_fetch_object($result)){
array_push($data,['id'=>$row->ID,'title'=>$row->Title,'longTitle'=>$row->TitleLong]);
}
echo json_encode($data);
答案 0 :(得分:1)
问题是你的后端将数据作为对象而不是数组返回
但filter
仅适用于数组(根据 the docs ):
从数组中选择项目的子集并将其作为新数组返回。
所以,你有两个选择:
<强> 1 强>
在将数据分配给作用域之前,将它们从对象转换为数组。 E.g:
$http.post(...).success(function (data) {
$scope.projects = [];
for (var key in data) {
$scope.projects.push(data[key]);
}
});
<强> 2 强>
让你的后端将数据作为JSONified数组而不是对象返回
PHP将$data
“数组”解释为对象的原因是索引不是顺序的(从0开始)。即而不是索引0, 1, 2...
,你有1,2,3...
。 (有关详细信息,请参阅 this answer 。)
要解决此问题,您可以更改代码,如下所示:
$data[] = array (...
另请参阅此 short demo 。
答案 1 :(得分:0)
我在没有服务电话here的情况下重复了您的工作。除了你的帖子(应该是一个获得),它完全相同。它工作正常。花一些时间来检查你的工作。 Javascript错误可能会禁用其他功能。
$scope.projects = [{
title: 'one',
longTitle: 'one long title'
}, {
title: 'two',
longTitle: 'two long title'
}];