Điều này có vẻ dễ dàng nhưng sau hai giờ đầu tôi đau.Lấy phần tử bê tông từ một ObservableArray
Tôi có categoryIndex (từ một lựa chọn) và tôi muốn lấy danh mục từ observableArray có Id đó.
Tôi làm như thế nào? Tôi đã thử với indexOf (nhưng Im không chắc chắn nó hoạt động như thế nào và tôi nhìn tài liệu của khóa học), tôi đã thử linq.js nhưng ở đâu là khó sử dụng hoặc Im ngu ngốc (Tôi không biết làm thế nào để có được Id từ một thể loại và so sánh nó).
observableArray của tôi là:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
Vì vậy, tôi chỉ cần một cách để có được sự "màu hồng" loại nếu Index của tôi là 2.
Cảm ơn bạn.
EDIT:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
Cảm ơn, bạn là số một. Nhưng tôi nhận được vô giá trị. Tôi đã chỉnh sửa bằng mã. selectedCategoryIndex là ok, nó có Id đúng nhưng selectedCategory có vẻ là null. Btw, tại sao firebug không hoạt động đúng với loại trực tiếp? nó luôn luôn nói rằng this.categories() trống nhưng nếu tôi gán nó cho một var mới, firebug có thể thấy dữ liệu trong var mới nhưng không có trong observableArray. –
Đoán của tôi là item.Id là 2 và $ ("# Danh mục"). Val() là "2". Bạn có thể làm một parseInt trên kết quả hoặc sử dụng == thay vì ===. Có một lý do tại sao bạn đang đọc val() của một phần tử thay vì có giá trị đó được theo dõi trong mô hình khung nhìn của bạn không? –
Ouch, JS 1, tôi 0. Im một dev máy tính để bàn cố gắng để tìm hiểu một số dev web quá. Tôi đã có kinh nghiệm xấu với những người giúp đỡ html (ASP.NET MVC) và loại trực tiếp vì vậy đó là lý do tại sao Im không sử dụng loại trực tiếp để theo dõi DropDownList của tôi. Cảm ơn một lần nữa. –