2016-06-05 2 views
3

Возможно, вы можете стать спасителем моего времени.Pagekit/VueJS: Ошибка добавления VueJS-компонента

Я пытаюсь реализовать vue-компоненты для моего расширения.

Я не могу включить пользовательские компоненты Vue.js. Я последовал за https://pagekit.com/docs/developer-basics/vuejs-and-webpack, чтобы создать компонент, который должен предоставить модальное поле, которое должно быть включено в представление настроек моего расширения. Этот модал должен использоваться несколько раз на одной странице с другим содержимым, поэтому я бы предпочел использовать компонентный компонент вместо жесткого кодирования его снова и снова в окне настроек (views/settings.php).

Для архивирования этого я создал следующий файл: app/components/template.vue

<template> 
<div>Test</div> 
</template> 

<script> 

    module.exports = { 

     section: { 
      label: 'Template', 
      priority: 100 
     } 
    }; 

    window.Settings.components['template'] = module.exports; 

</script> 

Я также обновил webpack.config.js

module.exports = [ 

    { 
     entry: { 
      "settings": "./app/views/admin/settings", 
      "template": "./app/components/template.vue" 

     }, 
     output: { 
      filename: "./app/bundle/[name].js" 
     }, 
     module: { 
      loaders: [ 
       {test: /\.vue$/, loader: "vue"} 
      ] 
     } 
    } 

]; 

и я зарегистрировал компонент в index.php

'events'  => [ 
     'view.scripts' => function ($event, $scripts) { 
      $scripts->register('template', 'isp:app/bundle/template.js', '~settings'); 
     } 
    ] 

Теперь я попытайтесь получить то, что работает в е вид

$view->script('settings', 'isp:app/bundle/settings.js', [ 'vue', 'uikit-form-password', 'editor' ])
; 

<component :is="template"></component> 

Но тест-строка не отображается

ответ

2

Вы именование компонента 'шаблона' при выполнении этого:

window.Settings.components['template'] = module.exports; 

изменить его на:

window.Settings.components['component'] = module.exports; 
+0

Привет, crabbly, к сожалению, это все еще не работает. И другие расширения не используют здесь ['components'], как вы можете видеть в https://github.com/pagekit/extension-blog/blob/master/app/components/post-meta.vue#L36. Этот компонент включен в имя 'post-meta'. – MyFault

+1

Здесь вы указываете свой компонент, в вашем случае вы пытались использовать '', что означает, что имя компонента должно быть 'component'. Вы можете изменить его на что-то еще, например «my-component», а затем использовать его так: ', но вам нужно объявить его так: window.Settings.components ['my-component'] = module.exports; ' – crabbly

Смежные вопросы