UNPKG

vue

Version:

Reactive, component-oriented view layer for modern web interfaces.

37 lines (33 loc) 1.16 kB
// helper to process dynamic keys for dynamic arguments in v-bind and v-on. // For example, the following template: // // <div id="app" :[key]="value"> // // compiles to the following: // // _c('div', { attrs: bindDynamicKeys({ "id": "app" }, [key, value]) }) import { warn } from 'core/util/debug' export function bindDynamicKeys( baseObj: Record<string, any>, values: Array<any> ): Object { for (let i = 0; i < values.length; i += 2) { const key = values[i] if (typeof key === 'string' && key) { baseObj[values[i]] = values[i + 1] } else if (__DEV__ && key !== '' && key !== null) { // null is a special value for explicitly removing a binding warn( `Invalid value for dynamic directive argument (expected string or null): ${key}`, this ) } } return baseObj } // helper to dynamically append modifier runtime markers to event names. // ensure only append when value is already string, otherwise it will be cast // to string and cause the type check to miss. export function prependModifier(value: any, symbol: string): any { return typeof value === 'string' ? symbol + value : value }