Các trường

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, chẳng hạn như chuỗi, số và màu sắc (cùng với các giá trị khác).

Việc đưa các giá trị của trường vào mã đã tạo bao gồm cả việc lấy giá trị của trường, biến đổi giá trị đó thành một chuỗi có thể sử dụng, sau đó 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. Dữ liệu được trả về sẽ khác nhau giữa các trường, vì vậy, bạn nên xem tài liệu về trường tích hợp để biết thông tin về trường cụ thể của mình. 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 các trường thả xuống trả về một chuỗi trung lập về ngôn ngữ 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ị của trường đã sẵn sàng để được nối với chuỗi mã ngay lập tức. Tuy nhiên, một số giá trị trường yêu cầu thực hiện thêm thao tác thì mới sử dụng được.

Chuỗi

Các chuỗi cần được trình tạo mã trích dẫn trước khi có thể 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. Điều này là cần thiết vì hai lý do:

  1. Biến được nhập bởi người dùng bằng ngôn ngữ họ chọn. Điều này có nghĩa là bạn có thể cần phải chuyển đổi các ký tự này sang ký tự ASCII. Ví dụ: "متغير" sẽ được chuyển đổi thành "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. 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 được sửa đổi để 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'));

Nối mã

Sau khi nhận được giá trị của trường và chuyển đổi giá trị đó thành một chuỗi, bạn có thể nối giá trị đó vào đúng vị trí bằng chuỗi mã của mình.

const code = `some code ${value} some more code`;

Mã trả lại hàng

Các loại quy tắc chặn khác nhau yêu cầu chuỗi mã được trả về theo những cách khác nhau, vì vậy, hãy xem từng trang riêng của chúng để biết thêm thông tin: