Laravel Vue.js 条件渲染
Laravel Vue.js Conditional Rendering
我是 Vue.js 的新手,我只想在另一个表单 select 字段被 select 编辑时呈现表单元素。希望你明白我的意思。
这是我的 Laravel 表格:
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
只有当第一个 select 字段中的 'Gold'、'Silver' 或 'Bronze' 为 [=42 时,第二个表单组(标签:实例)才应该可见=]ed,但如果 'No' 是 selected 则不可见。
感谢您的帮助!
如履薄冰
// 更新
我为此编辑了我的代码
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control v-model="mailarchive"']) !!}
</div>
</div>
<div class="form-group v-show="mailarchive !='-'"">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
这是我的 javascript
<script type="text/javascript">
new Vue({
el: '#mailarchive'
})
</script>
但是没有任何反应。我做错了什么?
您需要使用 v-model="mailArchive" 将第一个字段绑定到 var,然后在第二个表单组中使用 v-show="mailArchive !='-'"
这里有很多要解决的问题。首先,您应该设置一个 "parent" Vue 实例,而不是为各个输入字段创建一个新的 Vue 实例。例如,假设你想让整个表单成为一个 Vue 实例,然后当你打开你的表单时,像这样设置一个 id:
{!! Form::open(['id' => 'example']) !!}
然后,当您创建 Vue 实例时,引用该 ID:
<script type="text/javascript">
new Vue({
el: '#example'
})
</script>
接下来,你的这个代码是不正确的:
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control v-model="mailarchive"']) !!}
具体注意这部分:['class' => 'form-control v-model="mailarchive"']
你在这里做的是创造一些奇怪的东西 class。当您指定额外的 HTML 属性时,您需要像这样传递这些属性的数组:
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control', 'v-model' => 'mailarchive']) !!}
从那里开始,另一个问题是您如何使用 v-show
。
这是你拥有的:<div class="form-group v-show="mailarchive !='-'"">
再一次,出于某种原因,您将 v 指令放入 class。相反,将其用作自己的 HTML 属性,如下所示:
<div class="form-group" v-show="mailarchive !== '-'">
综上所述,您应该会看到如下内容:
{!! Form::open(['id' => 'example']) !!}
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control', 'v-model' => 'mailarchive']) !!}
</div>
</div>
<div class="form-group" v-show="mailarchive !== '-'">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
{!! Form::submit() !!}
{!! Form::close() !!}
</div>
<script>
new Vue({
el: '#example'
});
</script>
这是 jsfiddle 上的一个工作示例:http://jsfiddle.net/zj8hwjc9/1/
我是 Vue.js 的新手,我只想在另一个表单 select 字段被 select 编辑时呈现表单元素。希望你明白我的意思。
这是我的 Laravel 表格:
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
只有当第一个 select 字段中的 'Gold'、'Silver' 或 'Bronze' 为 [=42 时,第二个表单组(标签:实例)才应该可见=]ed,但如果 'No' 是 selected 则不可见。
感谢您的帮助!
如履薄冰
// 更新
我为此编辑了我的代码
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control v-model="mailarchive"']) !!}
</div>
</div>
<div class="form-group v-show="mailarchive !='-'"">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
这是我的 javascript
<script type="text/javascript">
new Vue({
el: '#mailarchive'
})
</script>
但是没有任何反应。我做错了什么?
您需要使用 v-model="mailArchive" 将第一个字段绑定到 var,然后在第二个表单组中使用 v-show="mailArchive !='-'"
这里有很多要解决的问题。首先,您应该设置一个 "parent" Vue 实例,而不是为各个输入字段创建一个新的 Vue 实例。例如,假设你想让整个表单成为一个 Vue 实例,然后当你打开你的表单时,像这样设置一个 id:
{!! Form::open(['id' => 'example']) !!}
然后,当您创建 Vue 实例时,引用该 ID:
<script type="text/javascript">
new Vue({
el: '#example'
})
</script>
接下来,你的这个代码是不正确的:
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control v-model="mailarchive"']) !!}
具体注意这部分:['class' => 'form-control v-model="mailarchive"']
你在这里做的是创造一些奇怪的东西 class。当您指定额外的 HTML 属性时,您需要像这样传递这些属性的数组:
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control', 'v-model' => 'mailarchive']) !!}
从那里开始,另一个问题是您如何使用 v-show
。
这是你拥有的:<div class="form-group v-show="mailarchive !='-'"">
再一次,出于某种原因,您将 v 指令放入 class。相反,将其用作自己的 HTML 属性,如下所示:
<div class="form-group" v-show="mailarchive !== '-'">
综上所述,您应该会看到如下内容:
{!! Form::open(['id' => 'example']) !!}
<div class="form-group">
{!! Form::label('mailarchive', 'Mailarchive: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['-' => 'No', 'Gold' => 'Gold', 'Silver' => 'Silver', 'Bronze' => 'Bronze'], null, ['class' => 'form-control', 'v-model' => 'mailarchive']) !!}
</div>
</div>
<div class="form-group" v-show="mailarchive !== '-'">
{!! Form::label('instance', 'Instance: ', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('mailarchive', ['Select' => 'Select', '1' => 'SV01', '2' => 'SV02'], null, ['class' => 'form-control']) !!}
</div>
</div>
{!! Form::submit() !!}
{!! Form::close() !!}
</div>
<script>
new Vue({
el: '#example'
});
</script>
这是 jsfiddle 上的一个工作示例:http://jsfiddle.net/zj8hwjc9/1/