如何处理 AngularJS 产品库中的条件子类别

用户13286

刚刚开始学习 AngularJS 并决定使用我目前学到的知识来模拟一个基本的产品库,但我遇到了障碍。目前我有一个简单的产品库,其中包含 3 个模板(类别列表、类别列表中的产品和产品概述)。我想要做的是设置某种条件,如果所选类别中的产品有子类别,它会使用category-list模板显示子类别列表如果他们没有子类别,它只会直接进入product-list模板。

创建了这个 Plunker,显示了我目前所处的位置。

在上面的示例中,如果有人点击“汽车”,我希望它使用category-list模板显示子类别列表因此,当您单击“汽车”时,它会带您进入带有 2 个按钮的屏幕:4-door2-door单击这些按钮之一将使用product-list模板向您显示来自这些子类别的产品但是,如果您要从初始屏幕单击“卡车”,它只会将您直接带到product-list模板,因为卡车没有子类别。

这是我的类别列表模板:

<section id="categories" ng-hide="productsVisible">
    <div ng-repeat="product in vm.products" class="category">
        <div ng-click="vm.selectCategory(product); showProducts();">
            <button>{{product.category}}</button>
        </div>
    </div>
</section>

这是我的产品列表模板:

<section id="products" ng-show="productsVisible">
    <div ng-repeat="product in vm.selectedCategory.items" class="product">
        <a href ng-click="vm.selectProduct(product); showResults();">{{product.name}}</a>
    </div>
</section>
伊万·西瓦克

查看我更新的plunker

基本上,您需要selectCategory通过对子类别进行分组并检查我们是否将在后续单击中进入该子类别来扩展该方法。像这样:

vm.selectCategory = function(category) {
  var subCats = [],
      map = {};

  if (category.items && !category.items[0].subCategory){
    vm.selectedCategory = category;
    vm.inSubCat = true;
    return;
  }

  vm.inSubCat = !category.items;
  if (category.items) category.items.forEach(function(e){
    if (!map[e.subCategory]) subCats.push({category: e.subCategory, name: category.category});
    map[e.subCategory] = true;
  });
  vm.products = subCats;

  if (vm.inSubCat) vm.selectedCategory = {items: vm.data.filter(function(c){
    return c.category == category.name;
  })[0].items.filter(function(p){
    return p.subCategory == category.category;
  }) };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理angularjs中的回调?

来自分类Dev

如何处理在AngularJS中禁用的JavaScript

来自分类Dev

如何处理AngularJS中的加载?

来自分类Dev

如何处理angularjs中的响应?

来自分类Dev

如何处理可能是angularjs中$ q承诺的对象?

来自分类Dev

如何处理angularJS中$ http.post的异步返回?

来自分类Dev

ng-app 如何处理 AngularJs 中的空白模块

来自分类Dev

angularjs如何处理csrf?

来自分类Dev

如何处理/防止浏览器导航或在angularjs中重新加载?

来自分类Dev

如何处理angularjs和$ http中的字符串素数?

来自分类Dev

如何处理AngularJS配置块错误

来自分类Dev

如何处理嵌套条件

来自分类Dev

如何处理嵌套条件

来自分类Dev

如何处理SKShapeNode子类中的触摸?

来自分类Dev

在Lua中,如何处理?

来自分类Dev

如何处理XSLT中的处理指令

来自分类Dev

Python如何处理导入的子类?

来自分类Dev

如何处理AngularJS路由找不到的资源

来自分类Dev

AngularJS-如何处理圆形手表?

来自分类Dev

AngularJS-Spring MVC Rest:如何处理异常

来自分类Dev

AngularJS-如何处理转换后的数据

来自分类Dev

如何处理 AngularJs 模块外的模态控制器?

来自分类Dev

如何处理嵌套表单的条件验证?

来自分类Dev

如何处理变量的“如果条件”?

来自分类Dev

如何处理多个组合/相关条件?

来自分类Dev

异步请求后如何处理条件

来自分类Dev

如何处理冲突的库?-Mathquill与Bootstrap

来自分类Dev

Armadillo库如何处理错误?

来自分类Dev

Armadillo库如何处理错误?