Esto parece fácil, pero después de dos horas me duele la cabeza.Obteniendo un elemento concreto de un array observable
Tengo un index de categoría (de un seleccionar) y quiero obtener la categoría de un observableArray que tiene 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 Where es difícil de usar o soy estúpido (no sé cómo obtener el Id de una categoría y compararlo).
Mi observableArray es la siguiente:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
Por lo tanto, sólo necesito una manera de obtener la categoría de "rosa" si mi índice es 2.
Gracias.
EDIT:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
Gracias, eres el número uno. Pero me estoy poniendo nulo. Edité con el código. selectedCategoryIndex está bien, tiene Id correcto pero selectedCategory parece nulo. Por cierto, ¿por qué Firebug no funciona bien con knockout? siempre dice que this.categories() está vacío, pero si lo asigno a una nueva var, firebug puede ver los datos en la nueva var pero no en el observableArray. –
Mi suposición es que item.Id es 2 y $ ("# Categories"). Val() es "2". Puede hacer un análisis sobre el resultado o usar == en lugar de ===. ¿Hay alguna razón por la que está leyendo el val() de un elemento en lugar de tener ese valor en su modelo de vista? –
Ouch, JS 1, me 0. Soy un desarrollador de escritorio tratando de aprender algunos desarrolladores web también. Tuve malas experiencias con html helpers (ASP.NET MVC) y knockout, por eso no uso knockout para rastrear mi DropDownList. Gracias de nuevo. –