[英]Angular search filter not working (data returned by PHP)
我沒有使搜索過濾器正常工作。
項目模板:
<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);
問題是您的后端將數據作為對象而不是數組返回。
但是filter
僅適用於數組(根據docs ):
從數組中選擇項的子集,並將其作為新數組返回。
因此,您有兩個選擇:
1。
在將數據分配給您的范圍之前,請將它們從對象轉換為數組。 例如:
$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...
(請參閱此答案以獲取更多信息。)
要解決此問題,您可以更改代碼,如下所示:
$data[] = array (...
另請參見此簡短演示 。
我已經復制了您的工作,但這里沒有服務電話。 除了您的帖子(應該得到)之外,其他內容完全相同。 而且效果很好。 花一些時間檢查您的工作。 JavaScript錯誤可能會禁用其他功能。 。
$scope.projects = [{
title: 'one',
longTitle: 'one long title'
}, {
title: 'two',
longTitle: 'two long title'
}];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.