Bỏ qua, tới nội dung chính
Cà Phê & Code Cà Phê & Code
  • Trang chủ
  • Chuyên mục
    • Backend
    • Bảo mật
    • Bảo mật ứng dụng web
    • Cơ sở dữ liệu
    • DevOps
    • Docker
    • Giải thuật
    • Go
    • Hệ điều hành
    • Java
    • Linux
    • Mang
    • Mạng
    • Message Queue
    • Odoo
    • RabbitMQ
    • Spring
    • Trình biên dịch
    • Vert.x

    • Tất cả chuyên mục
  • Sê-ri
  • Thẻ
  • Luyện thi
  • Ghi chú
  • Giới thiệu
  • Liên hệ
Đăng nhập
  1. Trang chủ
  2. Thẻ
  3. developer

#developer

212 bài viết
Odoo 18/09/2026 4 phút

Tách một thẻ thành component riêng và truyền dữ liệu xuống: props trong OWL

Ứng dụng thật gồm nhiều component lồng nhau. Cha truyền dữ liệu xuống con qua props — một chiều, có kiểm kiểu. Con chỉ đọc, không sửa. Dựng component con TheCard nhận props thật trên Odoo 19.

#odoo#odoo-19#owl#props#lap-trinh#developer
13
Odoo 18/09/2026 4 phút

Vì sao chạm vào DOM trong setup luôn null: hooks vòng đời onWillStart và onMounted

Component OWL có vòng đời: setup, onWillStart, render, onMounted. Nạp dữ liệu ở onWillStart; chạm DOM ở onMounted vì trước đó node chưa tồn tại. Đo thật thứ tự hook qua Console trên Odoo 19.

#odoo#odoo-19#owl#hooks#lap-trinh#developer
13
Odoo 18/09/2026 3 phút

Bấm một thẻ để chọn nó: bắt sự kiện với t-on trong OWL, và cái bẫy khi lặp danh sách

t-on-click gắn handler cho sự kiện. Gọi thẳng method thì nhận event; muốn truyền tham số (item trong t-foreach) phải dùng arrow function. OWL không có modifier .stop/.prevent như Vue. Đo thật trên Odoo 19.

#odoo#odoo-19#owl#event#lap-trinh#developer
9
Odoo 18/09/2026 6 phút

Component OWL của bạn cần gọi server, hiện toast, mở một view — nó không tự làm, nó mượn 'service'

useService là cách một component OWL lấy về những mảnh chức năng dùng chung của web client: orm để nói chuyện với server, notification để hiện toast, action để mở view. Mổ xẻ cơ chế và thử thật trên Odoo 19.

#odoo#odoo-19#owl#useservice#lap-trinh#developer
8
Odoo 18/09/2026 5 phút

Gọi ORM của Odoo ngay từ JavaScript: searchRead, searchCount, và cái bẫy readGroup đã bị đổi tên ở Odoo 19

orm service là cầu nối để component OWL đọc/ghi dữ liệu qua đúng ORM của Odoo mà không tự dựng request. Xem searchRead/searchCount/call chạy thật, và vì sao readGroup của bạn ném lỗi trên Odoo 19.

#odoo#odoo-19#owl#orm#lap-trinh#developer
12
Odoo 18/09/2026 5 phút

Khi orm không đủ: gọi thẳng một controller Python tự viết từ JavaScript — và hai cái tên Odoo 19 đã lặng lẽ đổi

rpc là cách component OWL gọi một route HTTP bất kỳ và nhận JSON, dùng khi orm không phủ được. Nhưng ở Odoo 19 rpc không còn là service, và type='json' đã thành 'jsonrpc'. Xem cả hai lỗi thật và cách sửa.

#odoo#odoo-19#owl#lap-trinh#rpc#developer
7
  • 1
  • …
  • 3
  • 4
  • 5
  • 6
  • 7
  • …
  • 36

Trang 5 / 36 — tổng 212 bài viết

Tìm kiếm
Admin

Nhấp một ngụm cà phê, viết thêm một dòng code

Xem thêm
Chuyên mục
  • Odoo 400
  • Giải thuật 270
  • Cơ sở dữ liệu 237
  • DevOps 102
  • Java 100
  • Hệ điều hành 90
  • Docker 68
  • Spring 60
  • Go 60
  • Linux 54
  • Vert.x 50
  • Mạng 45
  • Trình biên dịch 45
  • Message Queue 40
  • Backend 40
  • RabbitMQ 40
  • Bảo mật 39
  • Bảo mật ứng dụng web 1
Xem nhiều nhất
Bốn mươi dòng kiểm trước khi bấm nút triển khai — mỗi dòng đến từ một lần đã hỏng 10/08/2026 · 121
900 lần chạy test không bắt được lỗi luôn nằm đó — thêm một dòng sleep, nó lộ ra 100% 05/08/2026 · 108
Cùng một jar, ảnh Docker từ 866 MB xuống 126 MB — và cái bẫy làm ảnh nhỏ nhất in tiếng Việt ra dấu hỏi 06/08/2026 · 88
Integer 127 == 127 cho true, nhưng 128 == 128 cho false — vì sao, và bẫy đó ẩn ở đâu 05/05/2026 · 68
Một dòng println nở ra sáu lệnh, dấu cộng nối chuỗi biến thành invokedynamic — mở file .class ra xem 04/05/2026 · 63
Thẻ phổ biến
#zero-to-hero#do-dac#odoo#odoo-19#hieu-nang#developer#lap-trinh#devops#postgresql#sql#java#huong-dan#he-dieu-hanh#database#toi-uu#100-ngay-java#trinh-bien-dich#bao-mat#docker#dong-thoi#container#csdl#docker-compose#spring#go#golang#kubernetes#linux#giam-sat#mang#vertx#cau-truc-du-lieu#co-so-du-lieu#giai-thuat#kien-truc-may-tinh#quan-sat#kafka#message-queue#redis#rabbitmq#orm#web#van-hanh#view#ke-toan#owl#index#microservice#reactive#kho#qweb#website#kien-truc#crm#collections#nhan-su#thiet-ke#ban-hang#controller#do-tin-cay#gioi-thieu#bao-cao#cau-hinh#mua-hang#ecommerce#jvm#report#spring-boot#jpa#monitoring#san-xuat#stream#action#spring-security#test#bloat#du-an#http#oop#planner#tong-ket#context#event-bus#explain#jmh#module#mrp#phan-quyen#ton-kho#vacuum#amqp#bo-nho#email#exchange#io#join#kanban#lien-he#luong-ao#phan-vung#spring-amqp#thanh-toan#bat-dong-bo#concurrency#cong-cu#error#form#functional#go-loi#interface#json#logging#network#routing#spring-mvc#testing#wizard#api#assets#bytecode#chan-doan#chatter#cong-no#connection-pooling#consumer#debug#domain#generics#list#replication#san-pham#scss#statistics#trien-khai#tu-dong-hoa#widget#automation#bat-bien#bom#build#cache#chat-luong#deploy#dich-vu-khach-hang#dlx#erp#event-loop#exception#frontend#gc#group-by#helpdesk#hoa-don#hot-update#inheritance#jackson#javascript#jdbc#kieu-du-lieu#lambda#lo-trinh#luu-tru#maven#migration#nha-cung-cap#phe-duyet#portal#quan-ly-cong-viec#rang-buoc#retry#server-action#snippet#testcontainers#tim-kiem#tracing#tuy-bien#vertx-web#wal#work-mem#xpath#activity#analyze#bao-gia#bao-tri#barcode#batch#bat-dau#bien-the#button#cham-cong#channel#chi-phi#chuan-hoa#cluster#collectors#copy#crud#csrf#da-cong-ty#deadlock#default#delete#dich-thuat#dinh-gia-ton-kho#field-widget#fillfactor#future#giao-dich#giao-dien#giao-hang#ha#hikaricp#hoat-dong#hop-dong#i18n#ir-cron#java-time#jdk#jfr#jit#jsonb#junit#jwt#ke-thua#ket-noi#khoa#lead#log#luong#many2one#menu#model#nap-du-lieu#ngan-hang#nghi-phep#nhap-du-lieu#optional#owasp#parallel#partitioning#pattern-matching#phan-tich#phan-trang#pipeline#prefetch#python#queue#quorum-queue#record#recordset#rest#sap-xep#sealed#search#seo#theme#thue#tich-hop#timeout#timezone#tls#toast#transaction#transientmodel#trigram#tuyen-dung#unicode#upload#websocket#xay-dung-web#xml#abstract-model#ack#active-ids#actuator#addons#aggregate#alignment#analytic#approvals#assert#async#at-least-once#atomic#attachment#attendances#auth#autoboxing#automated-action#autovacuum#backpressure#backup#bang-dieu-khien#bang-gia#ban-hang-online#bao-cao-tai-chinh#bigdecimal#binding#blockingqueue#blog#brin#budget#bulk-load#but-toan#cache-hit-ratio#calendar#ca-nhan-hoa#canh-bao#cas#cham-gio#chart-of-accounts#chat#checklist#checkpoint#chung-chi#circuit-breaker#classloader#classpath#client-action#codec#command#comparator#completablefuture#component#compose#composite#computed#concurrenthashmap#config#cong-doan#cong-tac#constructor#cors#cot-moc#criteria#cron#csp#css#cte#da-hinh#da-ngon-ngu#danh-gia#danh-so#dashboard#datetime#ddl#default-method#delegation#demo-data#deque#developer-mode#dev-mode#devtools#dia-chi#dialog#dieu-chuyen#dieu-khien#dieu-kien#dinh-kem#discuss#display-name#distinct#doi-chieu#doi-sales#doi-soat#do-luong#don-hang#don-mua#don-vi-tinh#do-tre#download#dto#du-bao#editor#effective-cache-size#effective-io-concurrency#email-marketing#employees#encapsulation#encoding#env#ep-kieu#equals#error-boundary#error-handling#etcd#event#executor#exists#fanout#federation#field#filestore#flaky#flatmap#flyway#forkjoin#form-view#full-page-writes#full-text#full-text-search#getter#get-view#gia#giay-bao-co#gin#gist#git#gitops#gop-du-lieu#graalvm#gradle#graph#grep#group#groups#gtgt#handle#hang-doi#hash#hashcode#hashmap#hazelcast#headers#helm#help#hibernate#hoa-don-dien-tu#hoan-tien#hook#hooks#hoot#html#https#huge-pages#idempotency#inherit#inherits#inner-class#invoicing#ir-attachment#ir-sequence#isolation-level#iterator#javac#javap#jlink#jmm#journal#jsonrpc#jstack#keyset#khach-hang#khau-hao#khoa-chinh#khoa-ngoai#khoa-so#khuyen-mai#kiem-ke#kiem-soat#kien-hang#kiosk#knowledge#ky-dien-tu#ky-nang#ky-online#lag#lateral#lazy-load#lazy-queue#like#list-view#lock-date#logical#lo-serial#mail#mail-activity#mail-mail#mail-template#mail-thread#maintenance#maintenance-work-mem#management#many2many#map#materialize#mat-khau#mau-bao-gia#mau-email#ma-vach#max-connections#media#memcached#memory-leak#merge-join#message#message-post#method#mixin#mockito#moi-truong#monetary#mvcc#name-search#nang-cap#native-image#ngan-sach#nginx#nguoi-dung#nhan-hang#nhap-kho#nhat-ky#nhieu-buoc#nio#no-co#notification#n-plus-1#numeric#oauth2#observability#oca#oidc#onchange#on-conflict#one2many#openssl#or#order#outbox#package#padding#pagination#paperformat#partition-management#partition-pruning#partition-wise-join#patch#pdb#pdf#pecs#pgbadger#pgbench#pgbouncer#pg-locks#pg-repack#pg-stat-statements#pgstattuple#pg-trgm#phan-bo#phan-tan#phong-ban#phu-thuoc#pivot#plan-cache#poison-message#port#pprof#prepared-statement#producer#prometheus#promise#properties#props#publisher-confirms#pubsub#pylint#qos#qrcode#quality#quan-he#quyen#quy-trinh#random-page-cost#recruitment#redelivery#reference#regex#registry#reindex#related#replica#requests#res-company#resource#restclient#rfq#route#router#routes-rules#rpc#safe-eval#sao-ke#sao-luu#sargable#scaffold#scaling#scheduled#scheduled-action#sdkman#select#selection#separator#serialization#service-discovery#servlet#session#set#sharding#shared-buffers#shell#shovel#sign#sitemap#skip-locked#sla#slf4j#slice#slots#smart-button#so-cai#sockjs#so-do-to-chuc#solid#sort#source-code#spring-data#ssd#sse#statusbar#streaming#string#struct#structured-concurrency#studio#subquery#sudo#su-kien#switch#sync#synchronized#systray#tagged#tai-dat-hang#tai-khoan#tai-san#t-call#template#text#t-field#t-foreach#thao-tac-hang-loat#the-phan-loai#thiet-ke-api#thiet-lap#thread#threadlocal#thread-pool#thuc-hanh#thue-gtgt#thymeleaf#tieng-viet#tien-te#time#time-off#tinh-phi#toan-tu#to-khai#topic#topology#tour#transactioncase#transient-model#tra-truoc#treemap#tri-thuc#truncate#ttl#tuning#tuyen-duong#ty-gia#type-erasure#ung-dung#union#unlink#unlogged#update#upsert#useref#useservice#usestate#uuid#ux#vacuum-full#validation#varargs#verticle#vhost#viet-nam#viettel#visibility-map#volatile#wait-events#wal-compression#web-client#webclient#webhook#werkzeug#window-function#worker#workers#wraparound#write#xac-thuc-hai-lop#xml-id#xmlrpc#xuat-du-lieu#xuat-kho
Lưu trữ
  • Tháng 9/2026 1214
  • Tháng 8/2026 197
  • Tháng 7/2026 114
  • Tháng 6/2026 64
  • Tháng 5/2026 30
  • Tháng 11/2025 4
  • Tháng 10/2025 27
  • Tháng 9/2025 30
  • Tháng 8/2025 31
  • Tháng 7/2025 30
Theo dõi blog

Nhận email mỗi khi có bài viết mới. Không quảng cáo, huỷ bất cứ lúc nào.

Hoặc dùng RSS
Cà Phê & Code Cà Phê & Code

Cà Phê & Code là blog dành cho những người yêu công nghệ và lập trình. Nơi chia sẻ kiến thức coding, công cụ hữu ích, xu hướng công nghệ, kinh nghiệm phát triển phần mềm và những câu chuyện phía sau màn hình — tất cả được kể theo cách gần gũi, dễ hiểu, như một cuộc trò chuyện bên tách cà phê.

Liên kết
  • Trang chủ
  • Chuyên mục
  • Thẻ
  • Giới thiệu
  • Liên hệ
Chuyên mục nổi bật
Odoo (400)Giải thuật (270)Cơ sở dữ liệu (237)DevOps (102)Java (100)Hệ điều hành (90)Docker (68)Spring (60)Go (60)Linux (54)Vert.x (50)Mạng (45)Trình biên dịch (45)Message Queue (40)Backend (40)RabbitMQ (40)Bảo mật (39)Bảo mật ứng dụng web (1)

© 2026 Cà Phê & Code. Bảo lưu mọi quyền.