.= 'tag.htm'; break; case 'flag': $pre .= $default_pre .= 'flag.htm'; break; case 'my': $pre .= $default_pre .= 'my.htm'; break; case 'my_password': $pre .= $default_pre .= 'my_password.htm'; break; case 'my_bind': $pre .= $default_pre .= 'my_bind.htm'; break; case 'my_avatar': $pre .= $default_pre .= 'my_avatar.htm'; break; case 'home_article': $pre .= $default_pre .= 'home_article.htm'; break; case 'home_comment': $pre .= $default_pre .= 'home_comment.htm'; break; case 'user': $pre .= $default_pre .= 'user.htm'; break; case 'user_login': $pre .= $default_pre .= 'user_login.htm'; break; case 'user_create': $pre .= $default_pre .= 'user_create.htm'; break; case 'user_resetpw': $pre .= $default_pre .= 'user_resetpw.htm'; break; case 'user_resetpw_complete': $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': $pre .= $default_pre .= 'single_page.htm'; break; case 'search': $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } function theme_mode_pre($type = 0) { global $config; $mode = $config['setting']['website_mode']; $pre = ''; if (1 == $mode) { $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>javascript - Passing Props in Global Components in Vue - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Passing Props in Global Components in Vue - Stack Overflow

programmeradmin2浏览0评论

I want to register a ponent globally while passing some properties, so i can call it anywhere in the page but it seems its not working unless i use inline templates.

I don't want an inline template i want to organize my global ponent into single directory

import asideponent from '@/ponents/partial/reusable-ponents/aside-ponents'

    Vueponent('aside-ponent', asideponent, {
      props: {
        formType: Boolean,
        message: String
      }
    })


  <aside-ponent formType="true" message="Foo Bar"></aside-ponent>

but i can't make this thing work any ideas?

I want to register a ponent globally while passing some properties, so i can call it anywhere in the page but it seems its not working unless i use inline templates.

I don't want an inline template i want to organize my global ponent into single directory

import asideponent from '@/ponents/partial/reusable-ponents/aside-ponents'

    Vue.ponent('aside-ponent', asideponent, {
      props: {
        formType: Boolean,
        message: String
      }
    })


  <aside-ponent formType="true" message="Foo Bar"></aside-ponent>

but i can't make this thing work any ideas?

Share Improve this question asked Mar 8, 2018 at 5:04 Kristopher DandayKristopher Danday 591 silver badge5 bronze badges 2
  • Are you getting any errors? Sharing them could help. – Gokul Chandrasekaran Commented Mar 8, 2018 at 5:26
  • There's an error that says " Property or method "message" is not defined on the instance but referenced during render" – Kristopher Danday Commented Mar 8, 2018 at 6:03
Add a ment  | 

2 Answers 2

Reset to default 6

I think the declaration of your ponent is wrong. To extend your ponent definition with the added props, you can use the extends property.

Vue.ponent('aside-ponent-with-props', {
  extends: asideComponent,
  props: {
    formType: Boolean,
    message: String
  }
});

You need to use v-bind method to typecast its value:

 <aside-ponent :formType="true" :message="'Foo Bar'"></aside-ponent>

Where you can see:

:formType="true" => passed as boolean
:message="'Foo Bar'" => passed as string (notice to the quote)

For message, you can also use as before as it's just a string.


From the error you mentioned "Property or method "message" is not defined on the instance but referenced during render",

I just noticed that you're not initializing the value. You should be validating props like this:

props: {
  formType: {
     type: Boolean,
     default: false // or set true
  }
  message: {
     type: String,
     default: '' // whatever you want as default
  }
}

So, you should notice here that we're initializing the default value. Now, your error should disappear and work fine.

Ah, and yes, you also need to use extend method for props to work: So, replace this:

Vue.ponent('aside-ponent', asideponent, {

With this:

Vue.ponent('aside-ponent', Vue.extend(asideponent), {

See issue here.

发布评论

评论列表(0)

  1. 暂无评论