| 1234567891011121314151617181920212223242526272829303132333435 |
- /* @flow */
- // 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: Object, 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 (process.env.NODE_ENV !== 'production' && 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
- }
|