Home / Function/ processAttrs() — vue Function Reference

processAttrs() — vue Function Reference

Architecture documentation for the processAttrs() function in index.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02["processAttrs()"]
  320ee0f4_351d_a6b2_1c1c_f0f6f42fb987["index.ts"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|defined in| 320ee0f4_351d_a6b2_1c1c_f0f6f42fb987
  d580ca1c_dbf7_89f2_e0e4_6199ea988b51["processElement()"]
  d580ca1c_dbf7_89f2_e0e4_6199ea988b51 -->|calls| 94cd3ed6_4fec_eddb_c90a_1c38249e5b02
  4ef095e8_33df_71cc_7c57_18b2bc8f0a54["parseModifiers()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 4ef095e8_33df_71cc_7c57_18b2bc8f0a54
  b1101a58_6379_8514_36a1_9d7f75b2b23f["parseFilters()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| b1101a58_6379_8514_36a1_9d7f75b2b23f
  65a029a4_19bc_73e7_6dce_b5010c35150b["genAssignmentCode()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 65a029a4_19bc_73e7_6dce_b5010c35150b
  6d3095ae_d92b_c0a6_514d_fc6c4ef391ce["addHandler()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 6d3095ae_d92b_c0a6_514d_fc6c4ef391ce
  fb22e4d8_3c91_63a7_ee9d_526d8df61c58["addProp()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| fb22e4d8_3c91_63a7_ee9d_526d8df61c58
  51133883_ca33_6568_1819_239e506a3448["addAttr()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 51133883_ca33_6568_1819_239e506a3448
  8fd77f23_ee00_f1d1_782f_87be6944e85f["addDirective()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 8fd77f23_ee00_f1d1_782f_87be6944e85f
  3a79cd2e_18de_bdee_1bd2_a1afbad5bf50["checkForAliasModel()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| 3a79cd2e_18de_bdee_1bd2_a1afbad5bf50
  dbffbbee_5e53_d952_4e1c_509b08e0b3e2["parseText()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| dbffbbee_5e53_d952_4e1c_509b08e0b3e2
  style 94cd3ed6_4fec_eddb_c90a_1c38249e5b02 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/compiler/parser/index.ts lines 773–920

function processAttrs(el) {
  const list = el.attrsList
  let i, l, name, rawName, value, modifiers, syncGen, isDynamic
  for (i = 0, l = list.length; i < l; i++) {
    name = rawName = list[i].name
    value = list[i].value
    if (dirRE.test(name)) {
      // mark element as dynamic
      el.hasBindings = true
      // modifiers
      modifiers = parseModifiers(name.replace(dirRE, ''))
      // support .foo shorthand syntax for the .prop modifier
      if (process.env.VBIND_PROP_SHORTHAND && propBindRE.test(name)) {
        ;(modifiers || (modifiers = {})).prop = true
        name = `.` + name.slice(1).replace(modifierRE, '')
      } else if (modifiers) {
        name = name.replace(modifierRE, '')
      }
      if (bindRE.test(name)) {
        // v-bind
        name = name.replace(bindRE, '')
        value = parseFilters(value)
        isDynamic = dynamicArgRE.test(name)
        if (isDynamic) {
          name = name.slice(1, -1)
        }
        if (__DEV__ && value.trim().length === 0) {
          warn(
            `The value for a v-bind expression cannot be empty. Found in "v-bind:${name}"`
          )
        }
        if (modifiers) {
          if (modifiers.prop && !isDynamic) {
            name = camelize(name)
            if (name === 'innerHtml') name = 'innerHTML'
          }
          if (modifiers.camel && !isDynamic) {
            name = camelize(name)
          }
          if (modifiers.sync) {
            syncGen = genAssignmentCode(value, `$event`)
            if (!isDynamic) {
              addHandler(
                el,
                `update:${camelize(name)}`,
                syncGen,
                null,
                false,
                warn,
                list[i]
              )
              if (hyphenate(name) !== camelize(name)) {
                addHandler(
                  el,
                  `update:${hyphenate(name)}`,
                  syncGen,
                  null,
                  false,
                  warn,
                  list[i]
                )
              }
            } else {
              // handler w/ dynamic event name
              addHandler(
                el,
                `"update:"+(${name})`,
                syncGen,
                null,
                false,
                warn,
                list[i],
                true // dynamic
              )
            }
          }
        }
        if (
          (modifiers && modifiers.prop) ||
          (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))
        ) {

Domain

Subdomains

Called By

Frequently Asked Questions

What does processAttrs() do?
processAttrs() is a function in the vue codebase, defined in src/compiler/parser/index.ts.
Where is processAttrs() defined?
processAttrs() is defined in src/compiler/parser/index.ts at line 773.
What does processAttrs() call?
processAttrs() calls 9 function(s): addAttr, addDirective, addHandler, addProp, checkForAliasModel, genAssignmentCode, parseFilters, parseModifiers, and 1 more.
What calls processAttrs()?
processAttrs() is called by 1 function(s): processElement.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free