Я хочу вернуть true, если моя собственность соответствует совпадению в моем входе для поиска. Мне удалось сделать это с помощью моих других свойств из моих данных JSON, но в моих вложенных данных я не могу. Пробовал его с помощью for
цикла, а также просто с if
, но безуспешно.Поиск, если свойство соответствует, не работает
это, как я получаю мой JSON из БД:
db.query("One/docs").then(function(dataone){
var oness = [];
for(var i=0; i < dataone.rows.length; ++i) {
var x = new one();
x.fromJS(dataone.rows[i].value);
oness.push(x);
}
self.OneInfos(oness);
})
Может быть, я что-то забыть, я не знаю: P. Данные
Код 1:
function one(){
var self = this;
self.AssemblyName = ko.observable();
self.Description = ko.observable();
self.Name = ko.observable();
self.Obsolete = ko.observable();
self.TypeName = ko.observable();
self.Properties = ko.observable();
self.Implements = ko.observable();
self.Implements.Interfaces = ko.observable();
self.IsInSearch = ko.pureComputed(function(){
var searchRegEx= App.instance.SearchRegEx();
if(!searchRegEx)
return true;
if(searchRegEx.test(self.TypeName())) {
return true;
}
if(searchRegEx.test(self.Name())) {
return true;
}
if(searchRegEx.test(self.Description())) {
return true;
}
//todo - look if there is a filter for interfaces
if (searchRegEx.test(self.Implements.Interfaces.TypeName())){
return true;
}
return false;
});
}
И вот мое второе решение с for
цикла (он находится в той же строке под "TODO - комментарий"):
for(var i=0; i < Implements.length;++i) {
var Implement = Implements[i];
if (searchRegEx.test(self.Interfaces.TypeName)){
return true;
}
}
Примечание: Мои орудия отображаются с выбранным входом
Как вы конвертируете свой JSON в свою модель просмотра 'one'? То, как вы используете как наблюдаемые «Реализуемые инструменты», так и наблюдаемые «Реализованные инструменты», немного странно. Как насчет 'for (var i = 0; i <Реализует(). Length; i + = 1)' и т. Д.? – user3297291