Просмотр исходного кода

fix(ssr): resolve server directives the same as on client (#9129)

fix #8961
ggtmtmgg 7 лет назад
Родитель
Сommit
307835284a
1 измененных файлов с 8 добавлено и 5 удалено
  1. 8 5
      src/server/render.js

+ 8 - 5
src/server/render.js

@@ -3,6 +3,7 @@
 import { escape } from 'web/server/util'
 import { SSR_ATTR } from 'shared/constants'
 import { RenderContext } from './render-context'
+import { resolveAsset } from 'core/util/options'
 import { generateComponentTrace } from 'core/util/debug'
 import { ssrCompileToFunctions } from 'web/server/compiler'
 import { installSSRHelpers } from './optimizing-compiler/runtime-helpers'
@@ -324,11 +325,13 @@ function renderStartingTag (node: VNode, context) {
     if (dirs) {
       for (let i = 0; i < dirs.length; i++) {
         const name = dirs[i].name
-        const dirRenderer = directives[name]
-        if (dirRenderer && name !== 'show') {
-          // directives mutate the node's data
-          // which then gets rendered by modules
-          dirRenderer(node, dirs[i])
+        if (name !== 'show') {
+          const dirRenderer = resolveAsset(context, 'directives', name, true)
+          if (dirRenderer) {
+            // directives mutate the node's data
+            // which then gets rendered by modules
+            dirRenderer(node, dirs[i])
+          }
         }
       }
     }