Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 分离条件渲染的开始标记和结束标记_Vue.js_Vuejs2_Vue Component - Fatal编程技术网

Vue.js 分离条件渲染的开始标记和结束标记

Vue.js 分离条件渲染的开始标记和结束标记,vue.js,vuejs2,vue-component,Vue.js,Vuejs2,Vue Component,我不能做这个标签分离。基本上,我有一个单独的页眉和页脚,因为没有更好的单词,但我不能像在服务器端生成的标记中那样在Vue中这样做 对于这个问题,是否有解决方法或更优雅的解决方案 我不能做这个标签分离 这是正确的,因为Vue使用的是完整的文档模型,所以您无法按部分将元素组合在一起 我会选择一个定制的包装组件。类似于 {{label}} {{label}} 导出默认值{ 名称:“FieldWrapper”, 道具:{ 换行:布尔, 标签:字符串 } } 像这样使用它 描述 这里有更多的东西 组件中有

我不能做这个标签分离。基本上,我有一个单独的页眉和页脚,因为没有更好的单词,但我不能像在服务器端生成的标记中那样在Vue中这样做

对于这个问题,是否有解决方法或更优雅的解决方案

我不能做这个标签分离

这是正确的,因为Vue使用的是完整的文档模型,所以您无法按部分将元素组合在一起

我会选择一个定制的包装组件。类似于

{{label}} {{label}} 导出默认值{ 名称:“FieldWrapper”, 道具:{ 换行:布尔, 标签:字符串 } } 像这样使用它

描述 这里有更多的东西 组件中有一点重复,但对于您的用例,我认为这是可以接受的

我不能做这个标签分离

这是正确的,因为Vue使用的是完整的文档模型,所以您无法按部分将元素组合在一起

我会选择一个定制的包装组件。类似于

{{label}} {{label}} 导出默认值{ 名称:“FieldWrapper”, 道具:{ 换行:布尔, 标签:字符串 } } 像这样使用它

描述 这里有更多的东西 组件中有一点重复,但对于您的用例,我认为这是可以接受的


PHP的输出是一个字符串,因此您可以将其设置为+'hello'+,但对于JS framework,它们使用HtmleElement,因此您不能在这里执行相同的操作。我认为您需要习惯使用组件,也就是PHP。例如:

<template>
    <div>
        <template v-if="isFieldsetElement">
            <fieldset>
                <legend>Label Here</legend>
        </template>
        <template v-else>
            <label>Label Here</label>
        </template>

        <span> Description </span>
        <img src="image.png" />
        <div>more stuff here </div>

        <template v-if="isFieldsetElement">
            </fieldset>
        </template>
    </div>
</template>
对于上面的源,页眉、页脚、内容都表示一个组件,而内容通常有多个子组件

所以,标记分离从来都不是一个好的解决方案,包括PHP模板

<?php
class View() {
   public $header; public $footer; public $content;
}
$view = new View(); $view->header = 'Hello';...
?>
<html>
  <body>
     <header>
       <?php echo $view->header?>
     </header>
     <div id="root">
       <?php echo $view->content?>
     </div>
     <footer>
       <?php echo $view->footer?>
     </footer>
  </body>
</html>
或者与您在php中使用的方法相同:

<template>
    <div>
        <template v-if="isFieldsetElement">
            <fieldset>
                <legend>Label Here</legend>
                <span> Description </span>
                <img src="image.png" />
                <div>more stuff here </div>
            </fieldset>
        </template>
        <template v-else>
            <label>Label Here</label>
            <span> Description </span>
            <img src="image.png" />
            <div>more stuff here </div>
        </template>
    </div>
</template>

PHP的输出是一个字符串,因此您可以将其设置为+'hello'+,但对于JS framework,它们使用HtmleElement,因此您不能在这里执行相同的操作。我认为您需要习惯使用组件,也就是PHP。例如:

<template>
    <div>
        <template v-if="isFieldsetElement">
            <fieldset>
                <legend>Label Here</legend>
        </template>
        <template v-else>
            <label>Label Here</label>
        </template>

        <span> Description </span>
        <img src="image.png" />
        <div>more stuff here </div>

        <template v-if="isFieldsetElement">
            </fieldset>
        </template>
    </div>
</template>
对于上面的源,页眉、页脚、内容都表示一个组件,而内容通常有多个子组件

所以,标记分离从来都不是一个好的解决方案,包括PHP模板

<?php
class View() {
   public $header; public $footer; public $content;
}
$view = new View(); $view->header = 'Hello';...
?>
<html>
  <body>
     <header>
       <?php echo $view->header?>
     </header>
     <div id="root">
       <?php echo $view->content?>
     </div>
     <footer>
       <?php echo $view->footer?>
     </footer>
  </body>
</html>
或者与您在php中使用的方法相同:

<template>
    <div>
        <template v-if="isFieldsetElement">
            <fieldset>
                <legend>Label Here</legend>
                <span> Description </span>
                <img src="image.png" />
                <div>more stuff here </div>
            </fieldset>
        </template>
        <template v-else>
            <label>Label Here</label>
            <span> Description </span>
            <img src="image.png" />
            <div>more stuff here </div>
        </template>
    </div>
</template>
使用:

使用:


不可以,Vue使用完整的文档模型,因此您无法通过parts@Phil是的,但当您需要在组件周围包装标记时,必须有一些变通方法?这是一个非常常见的场景,对吗?不,Vue使用完整的文档模型,因此您无法通过parts@Phil是的,但当您需要在组件周围包装标记时,必须有一些变通方法?这是一个很常见的场景,对吧?这很聪明。从未想过使用动态组件来呈现普通的旧HTML标记。这非常聪明。从未想过使用动态组件来呈现普通的旧HTML标记。