Knockoutjs:如何根据类型和媒体类型进行过滤
Knockoutjs: how to filter by genre AND by mediatype
6天前,我问了这个问题:
如何从过滤器值中进行选择,其中类型逗号分隔的值仅包含所选择的内容
我得到了答案;一个家伙给这个提琴提供了解决方案:
https://jsfiddle.net/AnishPatelUk/7swLn92c/但是我遇到了另一个问题。虽然我有它搜索逗号字符串的匹配,并返回匹配等于数组的长度。此代码不完整。
我们的目标是让用户选择多个类型并显示这些类型。但是,当用户选择媒体类型,如DVD或蓝光。结果应该以DVD和/或蓝光格式显示该类型的所有项目。
例如:用户选择:冒险,科幻,然后Blueray;只有《星球大战》和《黑客帝国》应该出现。
如果用户选择:冒险,科幻;《星球大战》、《指环王》和《黑客帝国》都应该出现。
对于选择一个匹配i使用:
var match = ko.utils.arrayFirst(genreValues,
function (genre) {
return self.filterValues.indexOf(genre.trim()) > -1;});
if (match) {
return match;
}
但是我使用
来显示所有匹配的结果var matches = ko.utils.arrayFilter(genreValues, function (genre) { return
self.filterValues.indexOf(genre.trim()) >= 0; });
return matches.length === self.filterValues().length;
也许有一种方法可以把它们结合起来?这是我的小提琴尝试:https://jsfiddle.net/0jr5Lc25/
self.filterProducts = ko.computed(function () {
return ko.utils.arrayFilter(self.products(),function (product) {
var genreValues = product.genre.split(",");
var mediaValues = product.media;
var genreMatch = false;
var mediaMatch = false;
ko.utils.arrayForEach(genreValues, function (genre) {
if( self.filterValues.indexOf(genre.trim()) >= 0){
genreMatch = true;
}
//return self.filterValues.indexOf(genre.trim()) >= 0;
});
if(self.filterMedia().length === 0){
mediaMatch = true;
}
if(self.filterValues().length === 0){
genreMatch = true
}
// if string
if(self.filterMedia().indexOf(mediaValues.trim()) >= 0){
mediaMatch = true;
}
// if array
//ko.utils.arrayForEach(mediaValues, function (media) {
//if(self.filterMedia().indexOf(media.trim()) >= 0){
//mediaMatch = true;
//}
//});
if(genreMatch && mediaMatch){
return true;
} return false;
});
});
你有一些问题;
ko.utils。arrayFilter只需要使用一次
var medimatches = ko.utils。arrayFilter (mediaValues…是在和自己比较。
BlueRay不等于bluay
科幻html复选框正在工作,更正了html.
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 415(不支持的媒体类型)错误
- 不支持的媒体类型错误
- 对jQuery使用setTimeout()是否有任何问题;媒体查询“;类型情况
- 415 使用 JQuery/FormData 和 Web API 的不受支持的媒体类型
- 是否有媒体查询类型方法可以根据设备切换js文件
- c#asp.net如何使用bootstrap模式将视频源文件名添加到不同的媒体类型中
- 不支持Java POST请求的媒体类型
- Ajax/JSON服务器的响应状态为415(不支持的媒体类型)
- 我正在创建一个社交媒体类型的网站,我需要让用户动态发布
- 如何将css媒体类型动态添加到页面中
- Knockoutjs:如何根据类型和媒体类型进行过滤
- 正在加载媒体类型错误的脚本
- 邮件附件错误的媒体类型Gmail API
- 415(不支持的媒体类型)在尝试进行JSON调用时出错
- java POST 415(不支持的媒体类型)
- 如何从MIME类型中获取媒体类型
- POST请求返回415-不支持的媒体类型
- 415 不支持的媒体类型错误 - Domo 连接器