(离子框架)另一个工厂的Angular JS过滤器工厂?

用户3582100

我在Item,ItemTags和Tag中有三个工厂。如何创建自定义搜索来搜索其他工厂中的商品。例如,当我选择标签“ Steak”时,沙朗显示在列表中,当我选择标签“ Pizza”时,黑比萨显示在列表中。谢谢 ...

 .factory('Items', function() {
      var items = [{
        id: 1,
        name:'Black Pizza',
        main_img:'img/food1.jpg'
      }, {
        id: 2,
        name:'Sirloin',
        main_img:'img/food2.jpg'
      }];

      return {
        all: function() {
          return items;
        },
        remove: function(item) {
          items.splice(items.indexOf(item), 1);
        },
        get: function(itemId) {
          for (var i = 0; i < items.length; i++) {
            if (items[i].id === parseInt(itemId)) {
              return items[i];
            }
          }
          return null;
        }
      };
    })

 .factory('ItemTags', function(Items,Tags) {
      // Might use a resource here that returns a JSON array


      var itemTags = [{
        id: 1,
        itemId:Items.get(1),
        tagId:Tags.get(0)
      }, {
        id: 2,
        itemId:Items.get(0),
        tagId:Tags.get(1)
      }];

      return {
        all: function() {
          return itemTags;
        },
        remove: function(itemTag) {
          itemTags.splice(itemTags.indexOf(itemTag), 1);
        },
        get: function(itemTagId) {
          for (var i = 0; i < itemTags.length; i++) {
            if (itemTags[i].id === parseInt(itemTagId)) {
              return itemTags[i];
            }
          }
          return null;
        }
      };
    })

.factory('Tags', function() {
      var tags = [{
        id: 0,
        name: 'Steak'
      }, {
        id: 1,
        name: 'Pizza'
      }, {
        id: 2,
        name: 'Delicious'
      }];

      return {
        all: function() {
          return tags;
        },
        remove: function(tag) {
          tags.splice(tags.indexOf(tag), 1);
        },
        get: function(tagId) {
          for (var i = 0; i < tags.length; i++) {
            if (tags[i].id === parseInt(tagId)) {
              return tags[i];
            }
          }
          return null;
        }
      };
    })

感谢the_mahasagar的帮助:我正在修改mahasagar中的函数并将该函数添加到ItemTags中

 getDataByTag: function(tagId , itemId) {
        for (var i = 0; i < itemTags.length; i++) {
          if (itemTags[i].tagId.id === parseInt(tagId) && itemTags[i].itemId.id===parseInt(itemId)) {
            return itemTags[i];
          }
        }

这是我的过滤器:

 $scope.criteriaMatch = function( tagId) {
        return function( item ) {
            var itemTag = ItemTags.getDataByTag(tagId,item.id);
            if(itemTag!=null)
                return true;

            return null;
        };
    };
the_mahasagar

根据您的问题,您在ItemTags factory中做错了。只需检查并添加getDataByTag。

.factory('ItemTags', function(Items,Tags) {
// Might use a resource here that returns a JSON array
Items.get(0);
var itemTags = [{
  id: 1,
  itemId:Items.get(2),
  tagId:Tags.get(0)
}, {
  id: 2,
  itemId:Items.get(1),
  tagId:Tags.get(1)
}];

return {
  all: function() {
    return itemTags;
  },
  remove: function(itemTag) {
    itemTags.splice(itemTags.indexOf(itemTag), 1);
  },
  get: function(itemTagId) {
    for (var i = 0; i < itemTags.length; i++) {
      if (itemTags[i].id === parseInt(itemTagId)) {
        return itemTags[i];
      }
    }
    return null;
  },
  getDataByTag: function(itemTagId) {
    for (var i = 0; i < itemTags.length; i++) {
      if (itemTags[i].tagId.id === parseInt(itemTagId)) {
          return itemTags[i];
      }
    }
    return null;
  }
};
})

您可以获取以下数据:

.controller('AppCtrl', function($scope,Items,Tags,ItemTags) {
$scope.getData = function(Tagid) {
  console.log("ItemTags :"+JSON.stringify(ItemTags.getDataByTag(Tagid)));
}
  $scope.getData(0);
})

希望,你想要的一样。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Angular工厂注入另一个工厂

来自分类Dev

AngularJS:工厂和过滤器-工厂无法正常工作

来自分类Dev

Angular JS过滤器组选择过滤器

来自分类Dev

如何在angular.js中从另一个过滤器调用一个过滤器

来自分类Dev

通过工厂注册自定义过滤器

来自分类Dev

Django模板:另一个过滤器

来自分类Dev

Angular JS按过滤器分组

来自分类Dev

Angular JS过滤器工作异常?

来自分类Dev

Angular JS过滤器参数

来自分类Dev

使用“多个过滤器”的Angular JS

来自分类Dev

Angular Js中的过滤器

来自分类Dev

Angular JS过滤器重复

来自分类Dev

如何修复过滤器 Angular JS?

来自分类Dev

Javascript过滤器数组由另一个过滤器数组

来自分类Dev

当您的工厂依赖另一个工厂时,如何创建FactoryGirl工厂?

来自分类Dev

C# 中的简单工厂设计从另一个工厂调用工厂?

来自分类Dev

扩展另一个组件的Angular 8.2共享组件不会引发组件工厂错误

来自分类Dev

AngularJS:如何从工厂调用另一个函数

来自分类Dev

尝试访问另一个内部工厂功能

来自分类Dev

AngularJS:如何从工厂调用另一个函数

来自分类Dev

尝试访问另一个内部工厂功能

来自分类Dev

如何在AngularJS中为另一个过滤器DI一个过滤器?

来自分类Dev

如何从 Vue 中的另一个过滤器访问一个附加的过滤器

来自分类Dev

使用angular.js过滤器按月过滤日期

来自分类Dev

Angular.js过滤器不过滤完全匹配

来自分类Dev

在自定义过滤器Angular JS中使用数字过滤器

来自分类Dev

烧瓶-无法在应用程序工厂内注册之前过滤器

来自分类Dev

Apache Ignite:对连续查询设置远程过滤器工厂

来自分类Dev

AngularJS从同一模块将工厂注入另一个工厂

Related 相关文章

热门标签

归档