在laravelblade模板里面写一个js表达式

Write a js expression inside laravel blade template

我正在使用 tagsinput 进行一些标记操作。我想向从控制器发送的标签字段添加一些默认值。但似乎我尝试使用 js 表达式的方式不起作用。谁能帮我。这是代码。

<script>
    var cities = new Bloodhound({
                    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('text'),
                    queryTokenizer: Bloodhound.tokenizers.whitespace,
                    local: members
                });
                cities.initialize();
    var elt = $('#researcher');
                elt.tagsinput({
                    itemValue: 'value',
                    itemText: 'text',
                    allowDuplicates: false,
                    typeaheadjs: {
                        name: 'cities',
                        displayKey: 'text',
                        source: cities.ttAdapter()
                    }
                });
    @foreach ($memberResearch->member as $member)
         {!! $text = $member->firstName." ".$member->lastName !!}
         {!! $id = $member->member_id !!}
         @if($member->pivot->role == "Researcher")
             elt.tagsinput('add' , {"value" : {{ $id }} , "text" :{{ $text }} });
         @endif
    @endforeach 
</script>

PHP 和 Javascript 是两个非常独立的实体。

对于此类内容,最好的方法是 laravel 将内容(数据)转储到页面中前端 (javascript) 可以获取的某个位置。

例如:

    // controller
    $appConfig = [ 'foo' => 'bar' ];

    // blade
    <script>
        var AppConfig = {!! ! empty($appConfig) ? json_encode($appConfig) : "{}" !!};
    </script>

    // js
    var foo = JSON.parse(AppConfig).foo;
    console.log(foo); // outputs bar