【问题标题】:Laravel and @if statement inside javascript object literaljavascript对象文字中的Laravel和@if语句
【发布时间】:2016-08-23 05:45:27
【问题描述】:

我希望我写得正确,因为我记得当你在 javascript 中有一个数组选项时,这些选项被称为对象文字。我有一个问题,我找不到如何在对象文字中使用 @if 语句。 我有一个小站点,所有内容都位于welcome.blade.php 模板中,因此我没有单独的javascript 文件,我使用的函数位于标签内模板的底部。所以这是我拥有的全部功能

    <script>
        var employees = [
            @foreach ($workers->chunk(20) as $chunk)
            [
                @foreach ($chunk as $worker)
                    {
                        innerHTML:'<div class="container-fluid full-height"><div class="row full-height"><div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 full-height"><div class="person-info"><blockquote><h1>{{ $worker->first_name }} {{ $worker->last_name }}</h1>{{{ $worker->function !== '') ? <footer>{{ $worker->function }}</footer> : '' }}}</blockquote></div></div><div class="col-xs-5 col-sm-5 col-md-5 col-lg-5 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 full-height"><div class="person-photo"><img class="img-responsive" src="thumbs/{{ $worker->image }}" /></div></div></div></div>',
                        src:"thumbs/{{ $worker->thumbnail }}"
                    },
                @endforeach
            ],
            @endforeach
        ]
    </script>

如您所见,我需要从$workers 中的innerHTML 获取所有信息,并且应该将其输出为 html 内容,但由于数据库中的某些字段为空,因此我需要编写 @if 语句如果这些字段不为空以显示一些代码

{{{ $worker->function !== '') ? '<footer>{{ $worker->function }}</footer>' :  '' }}}

但我不知道如何让 innerHTML 内容中的 if 语句正常工作。

编辑:我最接近它的工作是这样的:

'{{ $worker->function ? "<footer>  $worker->function  </footer>" : "" }}' +

但这只是用&lt;footer&gt; 完全渲染输出所以现在我喜欢

John Doe &lt;footer&gt; 质量经理 &lt;/footer&gt;

【问题讨论】:

    标签: javascript php jquery laravel-5.2 object-literal


    【解决方案1】:

    这样试试

    <script>
    var employees = [
        @foreach ($workers->chunk(20) as $chunk)
        [
            @foreach ($chunk as $worker)
                {
                    innerHTML:'<div class="container-fluid full-height">'
                                 +'<div class="row full-height">'
                                     +'<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 full-height">'
                                        +'<div class="person-info">'
                                            +'<blockquote>'
                                               +'<h1>' {{ $worker->first_name }} {{ $worker->last_name }} +'</h1>'
                                                  @if($worker->function != '') 
                                                    +'<footer>' {{ $worker->function }} +'</footer>'
                                                  @endif
                                            +'</blockquote>'
                                        +'</div>'
                                    +'</div>'
                                   +'<div class="col-xs-5 col-sm-5 col-md-5 col-lg-5 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 full-height">'
                                       +'<div class="person-photo">'
                                          +'<img class="img-responsive" src="thumbs/{{ $worker->image }}" />'
                                       +'</div>'
                                   +'</div>'
                                 +'</div>'
                              +'</div>',
                    src:"thumbs/{{ $worker->thumbnail }}"
                },
            @endforeach
        ],
        @endforeach
    ]
    </script>
    

    【讨论】:

    • 不,这不起作用,只要你换行代码就会中断,所以我们必须转义它或在每个新行上使用 +,但无论如何当涉及到 @if 时只是跳过那部分并输出
      无论如何。
    • 是的,我的意思是 @if 不起作用,当我测试代码时它输出
      就像 @if 不存在一样。
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多