gpt4 book ai didi

javascript - 在 AngularJS 中使用过滤器更新给定的表

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:05 24 4
gpt4 key购买 nike

我有一个表格,我想通过选择一个选项卡或菜单项来重新排序。

上下文:该表填充了 SQL 数据库中的所有“订单”,通过单击特定区域的选项卡,它应该仅使用该区域的订单更新表。

我能否以某种方式制作一个 IF 语句,或者一个 while 循环?

目前它在 php 中获取这样的数据(我已经在其中尝试过滤);

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
echo json_encode($data);

// creates a connection to the mysql server
require('connection.php');

$filterGeo = $filterSta = $filterNH = $filterNot = '%';

if (isset($_GET['filterGeo'])) {$filterGeo = $_GET['filterGeo'];};
if (isset($_GET['filterSta'])) {$filterSta = $_GET['filterSta'];};
if (isset($_GET['filterNH'])) {$filterNH = $_GET['filterNH'];};
if (isset($_GET['filterNot'])) {$filterNot = $_GET['filterNot'];};


$result = $conn->query("SELECT * FROM orders
Where address LIKE '%$filterGeo%' AND status LIKE '%$filterSta%'");

$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"orderID":"' . $rs["orderID"] . '",';
$outp .= '"customerID":"' . $rs["customerID"] . '",';
$outp .= '"date":"' . $rs["date"] . '",';
$outp .= '"address":"'. $rs["address"] . '",';
$outp .= '"area":"'. $rs["area"] . '"}';
}

$outp ='{"orders":['.$outp.']}';
$outp = utf8_encode($outp);

$conn->close();
echo($outp);

//?>

JSON 是这样处理的;

var app = angular.module('Orders', []);   app.controller('getOrders', function($scope, $http) {
$http.get("/filterOrders.php")
.then(function (response) {$scope.orders = response.data.orders;}); });

相关的 HTML 片段:

  <div ng-app="Orders" ng-controller="getOrders">

<ul class="nav nav-tabs">
<li role="presentation" class="active"><a href="#">Alle</a></li>
<li role="presentation"><a href="#">Odder</a></li>
<li role="presentation"><a href="#">Hørning</a></li>
<li role="presentation"><a href="#">Ry</a></li>
<li role="presentation"><a href="#">Skanderborg</a></li>
</ul>
<table class="table table-condensed table-border table-striped">
<thead align="center">
<th>Order #</th>
<th>Customer #</th>
<th>Address</th>
<th>Area</th>
<th>Date</th>
<th>OrderType</th>
<th>TrashcanType</th>
<th>Status</th>
<th>RenoNord Invoice</th>
</thead>
<tbody>
<tr ng-repeat="x in orders">
<td>{{ x.orderID }}</td>
<td>{{ x.customerID }}</td>
<td>{{ x.address }}</td>
<td>{{ x.area }}</td>
<td>{{ x.date }}</td>
<td>{{ x.orderType }}</td>
<td>{{ x.trashcanType }}</td>
<td>{{ x.status }}</td>
<td>{{ x.renonord }}</td>

<td class="text-right">
<button href="#" data-id="{{ x.orderID }}" class="btn btn-xs btn-default">Ret</button>
<button href="#" data-id="{{ x.orderID }}" class="btn btn-xs btn-danger">Slet</button>
</td>

最佳答案

根据您想在何处过滤结果集(客户端或服务器端),您有几个选择:

过滤客户端:

ng-click 指令添加到您的选项中。有了它,您可以设置一个范围变量,您将使用它来进行过滤。

<li role="presentation"><a ng-click="areaFilter = 'Odder'">Odder</a></li>

在 ng-repeat 中使用 filter 过滤结果:

<tr ng-repeat="x in orders | filter: {area: areaFilter}">

过滤服务器端:

在这种情况下,每次应用新过滤器时都必须向服务器发出新请求。语义相同,但在这种情况下,您将在 ng-click 上调用函数,而不是将字符串分配给变量。

<li role="presentation"><a ng-click="filter('Odder')">Odder</a></li>

Controller :

$scope.filter = function(val) {
// create the url you want to call depending on "val"
var url = '/filterOrders.php';
switch (val) {
case 'Odder':
url += '?filterXY=Odder';
break;
default: break;
}
$http.get(url)
.then(function (response) {
$scope.orders = response.data.orders;
});
});
}

关于javascript - 在 AngularJS 中使用过滤器更新给定的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com