Trong Layout
sau đây, tôi thêm CollectionView
để hiển thị danh sách SELECT trong phạm vi onRender
. Ngay lập tức sau đó, tôi đang sử dụng băm ui để bật hoặc tắt tất cả các điều khiển trong chế độ xem. Điều này không làm việc cho SELECT được tạo bởi new App.View.Categories
.Sự cố băm giao diện người dùng với Bố cục sơ đồ xương sống
Có nên không? Hoặc mã băm giao diện người dùng không hoạt động trên Regions
trong một số Layout
?
App.View.UploadFile = Backbone.Marionette.Layout.extend({
template: '#upload-file-template',
regions:{
category: 'td:nth-child(4)'
},
ui:{
inputs: 'textarea, select, .save'
},
onRender: function(){
this.category.show(
new App.View.Categories({
collection: App.collection.categories
}) // generates the SELECT list
);
console.log(this.ui.inputs); // Length 2. Missing select.
console.log(this.$('textarea, select, .save')); // Length 3
this.ui.inputs.prop(
'disabled', (this.model.get('upload_status')!='staged')
);
}
});
Không có lỗi. Tôi đã thêm một số ví dụ về console.log ở trên. Bộ chọn sẽ bỏ chọn lựa, nhưng nó sẽ trả lại hai phần tử còn lại. Như bạn có thể thấy bởi console.log thứ hai, cùng một bộ chọn được bọc trong $ works. – Bart
Nhìn vào nguồn, tôi nghĩ rằng tôi thấy vấn đề. Các mục đó bị ràng buộc TRƯỚC KHI mục SELECT được thêm vào trong onRender. Có lẽ thêm các khu vực như thế này, trong onRender, không phải là thực hành tốt nhất. Bạn có mô hình khác để giới thiệu không? – Bart
Cảm ơn bạn đã cập nhật! – Bart