Wydaje się to łatwe, ale po dwóch godzinach boli mnie głowa.Uzyskiwanie elementu betonowego z obserwowalnego obiektu
Mam categoryIndex (od wyboru) i chcę uzyskać kategorię od obserwowalnych Array, które mają ten Id.
Jak to robię? Próbowałem z indexOf (ale nie jestem pewien jak to działa i wyglądałem na dokument oczywiście), próbowałem linq.js, ale Gdzie jest trudne w użyciu lub jestem głupi (nie wiem jak uzyskać identyfikator z kategorii i porównaj to).
Moja observableArray to:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
Tak, muszę tylko jeden sposób, aby uzyskać kategorię "pink" jeśli moja Index to 2.
Dziękuję.
EDIT:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
Dzięki, że jesteś numerem jeden. Ale otrzymuję zero. Edytowałem z kodem. selectedCategoryIndex jest ok, ma właściwy ID, ale selectedCategory wydaje się mieć wartość null. Btw, dlaczego firebug nie działa poprawnie z nokautem? zawsze mówi, że this.categories() jest puste, ale jeśli przypiszę to do nowego var, firebug może zobaczyć dane w nowym var, ale nie w obserservArray. –
Domyślam się, że item.Id ma wartość 2 i $ ("# Categories"). Val() to "2". Możesz zrobić parseInt na wyniku lub użyć == zamiast ===. Czy jest jakiś powód, dla którego czytasz wartość val() elementu, zamiast śledzić tę wartość w modelu widoku? –
Ouch, JS 1, ja 0. Jestem twórcą komputerów, próbującym nauczyć się trochę web dev też. Miałem złe doświadczenia z pomocnikami html (ASP.NET MVC) i nokautem, dlatego nie używam nokautu do śledzenia mojej DropDownList. Dzięki jeszcze raz. –