Tôi cảm thấy như tôi đang thiếu một cái gì đó rất cơ bản, nhưng tôi không thể có được một trình đơn thả xuống để làm việc như tôi mong đợi bằng cách sử dụng Knockout.js.Làm thế nào để có được tùy chọn trình đơn được lựa chọn từ một ObservableArs knockout.js?
Tôi có một tập hợp các đối tượng mà tôi muốn hiển thị trong menu và tôi cần tìm tùy chọn đã chọn và đăng lên máy chủ. Tôi có thể nhận được menu để hiển thị, nhưng dường như không thể nhận được giá trị của mục đã chọn. mô hình quan điểm của tôi trông như thế này:
function ProjectFilterItem(name, id) {
this.Name = name;
this.Id = id;
}
function FilterViewModel() {
this.projectFilters = ko.observableArray([
new ProjectFilterItem("foo", "1"),
new ProjectFilterItem("bar", "2"),
new ProjectFilterItem("baz", "3")
]);
this.selectedProject = ko.observable();
}
ko.applyBindings(new FilterViewModel());
và đánh dấu quan điểm của tôi trông như thế này:
<select
id = "projectMenu"
name = "projectMenu"
data-bind = "
options: projectFilters,
optionsText: 'Name', /* I have to enquote the value or I get a JS error */
optionsValue: 'Id', /* If I put 'selectedProject here, nothing is echoed in the span below */
optionsCaption: '-- Select Project --'
"
></select>
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span>
Làm thế nào để có được các mục trình đơn lựa chọn để hiển thị trong khoảng thời gian, và để gửi đến máy chủ? (Tôi giả định rằng tôi có thể quan sát được trong khoảng thời gian đó là một cái tôi muốn đăng.) Tôi có cần một tài sản khác trong số ProjectFilterItem
, như this.selected = ko.observable(false);
không? Nếu vậy, làm thế nào tôi sẽ khai báo nó như là mục tiêu của giá trị?
d'oh! Tôi đã bỏ lỡ điều đó trong tài liệu - tôi đang tập trung vào phần tham số ở dưới cùng và đọc ngay qua ghi chú ở trên cùng. Cảm ơn, vấn đề đã được giải quyết! – Val
Cảm ơn bản demo, nó đã giúp tôi rất nhiều! – WhatsInAName