|
@@ -1,10 +1,10 @@
|
|
|
import { directive, prefix } from '../directives'
|
|
|
import { initInterceptors } from '../interceptor'
|
|
|
-import { getNamedDataProvider } from '../datas'
|
|
|
+import { injectDataProviders } from '../datas'
|
|
|
import { addRootSelector } from '../lifecycle'
|
|
|
import { skipDuringClone } from '../clone'
|
|
|
import { addScopeToNode } from '../scope'
|
|
|
-import { injectMagics } from '../magics'
|
|
|
+import { injectMagics, magic } from '../magics'
|
|
|
import { reactive } from '../reactivity'
|
|
|
import { evaluate } from '../evaluator'
|
|
|
|
|
@@ -13,17 +13,13 @@ addRootSelector(() => `[${prefix('data')}]`)
|
|
|
directive('data', skipDuringClone((el, { expression }, { cleanup }) => {
|
|
|
expression = expression === '' ? '{}' : expression
|
|
|
|
|
|
- let dataProvider = getNamedDataProvider(expression)
|
|
|
+ let magicContext = {}
|
|
|
+ injectMagics(magicContext, el)
|
|
|
|
|
|
- let data = {}
|
|
|
+ let dataProviderContext = {}
|
|
|
+ injectDataProviders(dataProviderContext, magicContext)
|
|
|
|
|
|
- if (dataProvider) {
|
|
|
- let magics = injectMagics({}, el)
|
|
|
-
|
|
|
- data = dataProvider.bind(magics)()
|
|
|
- } else {
|
|
|
- data = evaluate(el, expression)
|
|
|
- }
|
|
|
+ data = evaluate(el, expression, { scope: dataProviderContext })
|
|
|
|
|
|
injectMagics(data, el)
|
|
|
|