knockout.js - remove - ko js if
Obteniendo un elemento concreto de un observableArray (1)
Esto parece fácil pero después de dos horas me duele la cabeza.
Tengo un índice de categoría (de un selecto) y quiero obtener la categoría de un Array observable que tenga ese ID.
¿Cómo hago eso? Intenté con indexOf (pero no estoy seguro de cómo funciona y busqué el documento, por supuesto), probé linq.js pero el Dónde es difícil de usar o Im estúpido (no sé cómo obtener el ID de una categoría y compararlo).
Mi observableArray es esto:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
Por lo tanto, solo necesito una forma de obtener la categoría "Rosa" si mi Índice es 2.
Gracias.
EDITAR:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
Usualmente uso una función de utilidad KO ko.utils.arrayFirst
para hacer este tipo de cosas. Simplemente recorre una matriz y devuelve el primer elemento que coincide con el predicado que se le pasó.
Lo usarías así:
selectedId = 2;
var category = ko.utils.arrayFirst(categories(), function(category) {
return category.Id === selectedId;
});