Trường là một phần quan trọng trong quá trình tạo mã, vì chúng xác định các giá trị mà người dùng có thể chỉnh sửa như chuỗi, số và màu sắc (cùng với các giá trị khác).
Bao gồm giá trị của trường trong mã được tạo liên quan đến việc lấy giá trị của trường, biến đổi chuỗi đó thành một chuỗi hữu dụng rồi nối chuỗi đó với phần còn lại của mã.
import {javascriptGenerator} from 'blockly/javascript';
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
// Get the field value.
const fieldValue = block.getFieldValue('MY_FIELD');
// Concatenate the code.
const code = `some code ${fieldValue} some more code`;
// Return the code.
return code;
}
Nhận giá trị
Bạn có thể truy cập vào các giá trị của trường bằng getFieldValue
. Lợi ích
trả về sẽ khác nhau giữa các trường, do đó bạn nên kiểm tra lệnh cài đặt sẵn
để biết thông tin về trường cụ thể của bạn. Cho
ví dụ: các trường nhập văn bản trả về văn bản chính xác mà người dùng đã nhập, nhưng trình đơn thả xuống
các trường trả về chuỗi trung lập về ngôn ngữ được liên kết với mục mà người dùng
đã chọn.
Biến đổi giá trị
Hầu hết các giá trị trường đã sẵn sàng để liên kết với chuỗi mã ngay lập tức. Tuy nhiên, một số giá trị trường đòi hỏi bạn thực hiện thêm một số thao tác trước khi có thể sử dụng được.
Chuỗi
Trình tạo mã cần trích dẫn các chuỗi trước khi nối các chuỗi đó.
// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));
// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));
Biến
Trình tạo mã cần phải xoá tên biến trước khi có thể nối với nhau. Điều này cần thiết vì hai lý do:
- Các biến do người dùng nhập bằng ngôn ngữ họ chọn. Điều này có nghĩa là
cần được chuyển đổi sang ký tự ASCII. Ví dụ: "
متغير
" sẽ được chuyển đổi thành "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
". - Các biến có thể xung đột với các từ dành riêng. Điều này có nghĩa là chúng có thể cần phải
sửa đổi để chúng không xung đột với nhau. Ví dụ: "
for
" sẽ được chuyển đổi thành "for2
".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
Kết hợp mã
Sau khi nhận được giá trị của trường và chuyển đổi trường đó thành một chuỗi, bạn có thể nối mã đó vào đúng vị trí với chuỗi mã của bạn.
const code = `some code ${value} some more code`;
Mã trả lại hàng
Các loại khối khác nhau yêu cầu trả về chuỗi mã trong các loại khối khác nhau , vì vậy hãy xem trang riêng của họ để biết thêm thông tin: