【发布时间】:2020-01-16 01:46:00
【问题描述】:
在我的 nativescript-vue 应用程序中,我有一个名为 profileForm 的 singleFile 组件。我想以两种方式使用该组件,如果用户已登录,我希望将该组件作为我的布局组件的插槽来编辑配置文件。否则我要的是作为注册表单。
我不想创建额外的组件来处理这个问题。 所以在一种情况下,我想将我的组件包装在一个标签中,以便我可以使用 Vue.$navigateTo 导航到它,在另一种情况下,我想将它包装在一个组件中。但是组件本身有一个标签,所以在这种情况下我不再想要了。
在 django 模板中,我会这样做:
<template>
<Page v-if="is_signup" actionBarHidden="true">
<AppLayout v-else title="Profile">
...
</AppLayout v-else>
</Page v-if="is_signup">
</template>
当然,这在 vuejs 中是行不通的。有没有办法在 vuejs 中实现这一点?
我可以创建一个新组件并像这样包装它:
<template>
<Page v-if="is_signup" actionBarHidden="true">
<ProfileForm/>
</Page>
<AppLayout v-else title="Profile">
<ProfileForm/>
</AppLayout>
</template>
但我宁愿不为此任务创建新组件。
我希望得到这样的东西:
<template>
<template :is="is_signup?'Page':'AppLayout'" :v-bind="is_signup?{actionBarHidden:true}:{title:'Profile'}">
...
</template>
</template>
nativescript-vue 有这样的语法吗?
【问题讨论】:
-
使用 vue 的工作方式。您不能将 applayout 嵌套在条件页面中......您的第二段代码是布局以这种方式工作的唯一方式。由于页面失败
v-if渲染器永远不会进入块:这将包括应用程序。 -
在您编辑之后,我记得在某处看到了这个
:is绑定。我认为这里已经讨论过了......在文档nativescript.org/blog/… 的任何地方都没有提到它 -
我的方法是使用一个布尔变量,比如
isLogin并根据路由判断为真或假。 -
@VaritJPatel 我不太明白你在说什么。
-
也许您可以提供您认为错误所在的代码sn-p?您想要做的事情在 vue 中是可能的,并且在很多资源中都有描述 - 我无法说出您的问题到底是什么可以进一步帮助您