可观察阵列的剔除过滤

斯凯尔·戴夫

我已经开始学习淘汰赛,但在单击按钮并显示结果时过滤可观察到的数组时遇到了一些麻烦。

这是我的模型:

function Product(data) {     
    this.id = data.id;
    this.name = data.name;
    this.price = data.price;
    this.description = data.desc;
    this.image = data.image;
    this.genre = data.genre;
    this.show = data.show;
    this.offer_desc = data.offer_desc;
    this.offer_id = data.offer_id;
}

function ProductModel() {
    var self = this;
    self.products = ko.observableArray([]);

    $.getJSON('../PHP/Utilities.php?json=true', function(json) {
       var mappedProducts = $.map(json, function(item) { return new Product(item) });
       self.products(mappedProducts);
    });

    self.filterProducts = ko.computed(function(genre) {
        if(typeof genre === 'undefined') {
            return self.products(); //initial load when no genre filter is specified
        } else {
            return ko.utils.arrayFilter(self.products(), function(prod) {
                return prod.genre = genre;
            });
        }
    });
}

ko.applyBindings(new ProductModel());

这是html:

<div data-bind="foreach: filterProducts">
    <div class="row">
        <div class="col-md-2">
        <img data-bind="attr:{src: '../images/' + image, alt: name}" />
        </div>
        <div class="col-md-2" data-bind="text: name"></div>
        <div class="col-md-1" data-bind="text: price"></div>
        <div class="col-md-3" data-bind="text: description"></div>
        <div class="col-md-1" data-bind='text: offer_id'>                  
        <div class="col-md-2" data-bind="text: genre"></div>
        <div class="col-md-1" data-bind="text: show"></div>
    </div>
</div>

我也不确定如何绑定单击功能以按类型过滤产品。我以为这样的事情...但是它不起作用

<button data-bind="click: filter('1')"> Filter </button>

self.filter = function(genre) {
    self.filterProducts(genre);
}
nemesv

您不能在中包含带有参数的函数ko.computed

您需要将当前过滤器存储在新属性中,并在计算出的属性中使用它

function ProductModel() {
    var self = this;
    self.products = ko.observableArray([]);

    self.currentFilter = ko.observable(); // property to store the filter

    //...

    self.filterProducts = ko.computed(function() {
        if(!self.currentFilter()) {
            return self.products(); 
        } else {
            return ko.utils.arrayFilter(self.products(), function(prod) {
                return prod.genre == self.currentFilter();
            });
        }
    });
}

并在您的click处理程序中设置当前过滤器:

<button data-bind="click: function() { filter('1') }"> Filter </button>

self.filter = function(genre) {
    self.currentFilter(genre);
}

演示JSFiddle

请注意function() { }in,如果要在click绑定中传递其他参数a (另请参见文档),否则Knockout会在解析绑定时执行功能,而不是在单击按钮时执行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于字符串过滤可剔除可观察数组

来自分类Dev

平面可观察阵列

来自分类Dev

使用选择基因剔除过滤列表

来自分类Dev

如何在剔除js中绑定可观察的可观察的

来自分类Dev

可观察数组中的基因剔除搜索

来自分类Dev

清除角度可观察的阵列

来自分类Dev

从角过滤的FireStore可观察

来自分类Dev

如何过滤可观察数组?

来自分类Dev

根据JSON响应创建可观察的基因剔除数组

来自分类Dev

如何使用可剔除可观察数组更新特定表列

来自分类Dev

可观察的可剔除属性包含功能代码

来自分类Dev

在剔除中更改可观察数组中的值

来自分类Dev

使用可剔除的可观察数组填充dropdownlist

来自分类Dev

剔除动态替换可观察数组中的对象

来自分类Dev

从可观察数组中剔除访问对象的值

来自分类Dev

通过可观察对象过滤可观察对象

来自分类Dev

通过可观察对象过滤可观察对象

来自分类Dev

如何在可观察的属性上过滤可观察的对象?

来自分类Dev

可观察的rxjs过滤器

来自分类Dev

可观察的 switchMap 过滤器 toArray

来自分类Dev

如何使用可观察的 rxJS 过滤 json

来自分类Dev

使用Kendo可观察阵列,模板和数据绑定

来自分类Dev

敲除和可观察到的阵列不匹配

来自分类Dev

为什么过滤可观察的订阅结果会产生与过滤可观察的结果不同的结果

来自分类Dev

带剔除的jQWidgets数字输入不会更新为可观察到的

来自分类Dev

从可观察数组项属性值动态获取的剔除模板名称

来自分类Dev

如何找出最初在何处(在哪个.js文件中)创建可观察到的剔除?

来自分类Dev

计算出的剔除会创建可写但未读的可观察对象的依赖关系

来自分类Dev

当函数更新计算中使用的可观察数组时,剔除计算数组未更新

Related 相关文章

  1. 1

    基于字符串过滤可剔除可观察数组

  2. 2

    平面可观察阵列

  3. 3

    使用选择基因剔除过滤列表

  4. 4

    如何在剔除js中绑定可观察的可观察的

  5. 5

    可观察数组中的基因剔除搜索

  6. 6

    清除角度可观察的阵列

  7. 7

    从角过滤的FireStore可观察

  8. 8

    如何过滤可观察数组?

  9. 9

    根据JSON响应创建可观察的基因剔除数组

  10. 10

    如何使用可剔除可观察数组更新特定表列

  11. 11

    可观察的可剔除属性包含功能代码

  12. 12

    在剔除中更改可观察数组中的值

  13. 13

    使用可剔除的可观察数组填充dropdownlist

  14. 14

    剔除动态替换可观察数组中的对象

  15. 15

    从可观察数组中剔除访问对象的值

  16. 16

    通过可观察对象过滤可观察对象

  17. 17

    通过可观察对象过滤可观察对象

  18. 18

    如何在可观察的属性上过滤可观察的对象?

  19. 19

    可观察的rxjs过滤器

  20. 20

    可观察的 switchMap 过滤器 toArray

  21. 21

    如何使用可观察的 rxJS 过滤 json

  22. 22

    使用Kendo可观察阵列,模板和数据绑定

  23. 23

    敲除和可观察到的阵列不匹配

  24. 24

    为什么过滤可观察的订阅结果会产生与过滤可观察的结果不同的结果

  25. 25

    带剔除的jQWidgets数字输入不会更新为可观察到的

  26. 26

    从可观察数组项属性值动态获取的剔除模板名称

  27. 27

    如何找出最初在何处(在哪个.js文件中)创建可观察到的剔除?

  28. 28

    计算出的剔除会创建可写但未读的可观察对象的依赖关系

  29. 29

    当函数更新计算中使用的可观察数组时,剔除计算数组未更新

热门标签

归档