ctx.resource
Instance FlowResource trong ngữ cảnh hiện tại, dùng để truy cập và thao tác dữ liệu. Trong đa số block (form, table, chi tiết, v.v.) và kịch bản popup, môi trường runtime sẽ bind sẵn ctx.resource; trong các kịch bản mặc định không có resource như JSBlock, cần gọi ctx.initResource() trước để khởi tạo, rồi sử dụng qua ctx.resource.
Kịch bản áp dụng
Tất cả các kịch bản trong RunJS cần truy cập dữ liệu có cấu trúc (list, đơn, API tùy chỉnh, SQL) đều có thể sử dụng. Block form, table, chi tiết và popup thường đã được bind sẵn; JSBlock, JSField, JSItem, JSColumn nếu cần tải dữ liệu, có thể ctx.initResource(type) trước rồi truy cập ctx.resource.
Định nghĩa kiểu
- Trong ngữ cảnh đã bind sẵn,
ctx.resourcelà instance resource tương ứng; - Trong kịch bản mặc định không có resource như JSBlock, là
undefined, cầnctx.initResource(type)trước mới có giá trị.
Phương thức thường gặp
Các kiểu resource khác nhau (MultiRecordResource, SingleRecordResource, APIResource, SQLResource) expose phương thức hơi khác nhau, sau đây là các phương thức chung hoặc thường dùng:
Riêng MultiRecordResource: getSelectedRows(), destroySelectedRows(), setPage(), next(), previous(), v.v.
Ví dụ
Dữ liệu list (cần initResource trước)
Kịch bản table (đã bind sẵn)
Bản ghi đơn
Gọi action tùy chỉnh
Quan hệ với ctx.initResource / ctx.makeResource
- ctx.initResource(type): Nếu
ctx.resourcekhông tồn tại sẽ tạo và bind; nếu đã tồn tại trả về trực tiếp. Đảm bảoctx.resourcekhả dụng. - ctx.makeResource(type): Tạo instance resource mới và trả về, không ghi vào
ctx.resource. Phù hợp với kịch bản cần nhiều resource độc lập hoặc sử dụng tạm thời. - ctx.resource: Truy cập resource đã bind trong ngữ cảnh hiện tại. Đa số block/popup đã được bind sẵn; khi không bind là
undefined, cầnctx.initResourcetrước.
Lưu ý
- Trước khi sử dụng khuyến nghị kiểm tra null:
ctx.resource?.refresh(), đặc biệt trong các kịch bản có thể không bind sẵn như JSBlock. - Sau khi khởi tạo cần gọi
setResourceName(name)để chỉ định collection, rồi tải dữ liệu quarefresh(). - API đầy đủ của các kiểu Resource xem các link bên dưới.
Liên quan
- ctx.initResource() - Khởi tạo và bind resource vào ngữ cảnh hiện tại
- ctx.makeResource() - Tạo instance resource mới, không bind vào
ctx.resource - MultiRecordResource - Nhiều bản ghi/list
- SingleRecordResource - Bản ghi đơn
- APIResource - Resource API thông dụng
- SQLResource - Resource truy vấn SQL

