angular - 带有类别的 Laravel Angular 过滤数据不起作用
问题描述
我正在使用 laravel 和 angular 进行电子商务项目,我有这个产品的产品和品牌,在我在 laravel 中获得产品的功能中,我使用了像这样的可空参数
public function index($brand = null)
{
if ($brand) {
$products = Product::where('brand_id', '=', $brand)->get();
return response()->json($products);
} else {
$products = Product::get();
return response()->json($products);
}
}
这是laravel中的api URL
Route::get('/products/{brand?}', 'App\Http\Controllers\ApiProductController@index');
当用户加入产品页面时,我需要在角度上向他显示所有产品,并且产品上方有链接,上面有 onclick 事件以选择特定品牌
有角度的 html 代码
<ul class="d-flex list-unstyled justify-content-around w-50 mx-auto mt-5">
<li (click)="onChange(null)">All</li>
<li *ngFor="let brand of brands" (click)="onChange(brand.id)">{{ brand.name }}</li>
</ul>
角度 ts 代码
onChange(brand: any) {
this.favBrand = brand;
this._ProductsService.getProducts(this.favBrand).subscribe(data => {
this.shuffle(data);
this.products = data;
this.page = 0;
this.totalItems = this.products.length;
});
}
constructor(public _HttpClient: HttpClient, public _BrandsService: BrandsService, public
_ProductsService: ProductsService, public _Router: Router) {
_ProductsService.getProducts(this.favBrand).subscribe(data => {
this.shuffle(data);
this.products = data;
console.log(data);
this.page = 0;
this.totalItems = this.products.length;
});
_BrandsService.getBrands().subscribe((data) => {
this.brands = data;
}, (err) => {
console.log(err);
});
}
角度产品服务代码
getProducts(brand?: any): Observable<any> {
return this._HttpClient.get(`http://localhost/mobitech/public/api/products/${brand}`);
}
当我在没有输入任何品牌参数的情况下加载页面时,产品没有加载,当我点击特定品牌时,产品加载良好,为什么所有产品都没有显示
解决方案
您可以有一个默认品牌,当您重新加载时从 API 获取数据,并且每当用户更改品牌时,您已经拥有该功能。
您可以在此处添加或可能是 TS 文件。
getProducts(brand: any = 'defaultBrand'): Observable<any> {
return this._HttpClient.get(`http://localhost/mobitech/public/api/products/${brand}`);
}
如果您不想显示默认品牌列表,只需向用户显示一条消息以与您拥有的下拉菜单或表单进行交互。
推荐阅读
- git - 获取当前提交的新标签,而不获取更新的提交
- sql - 如果 count 为 0,则跳过数据库记录
- c# - 如何在 C# 中使表单可见
- android-annotations - AndroidAnnotions:在发布 buildType 找不到符号
- java - 如何使用 XSLT 根据 XML 文件中的值计数更改属性值
- android - 如何在 Android Studio 中更改 XML 文件中的命名空间前缀颜色
- java - 如何在 Vaadin 中使用 Java 设置 ListBox 的宽度?
- angularjs - 会话过期后 Symfony 不会重定向到登录路由
- mysql - 如何使用更新查询从逗号分隔的字符串中删除值?
- c++ - 在定义的异常类中捕获程序中止