简体   繁体   English

如何使用单独的 js 文件使用刀片数组(由 javascript 附加)?

[英]How to use blade array (appended by javascript) using separate js file?

I have a javascript function like this:我有一个 javascript function 像这样:

function addRow(){
$('#mainbody').append('<tr>' +
    '<td><select class="form-control" name="addmore['+i+'][name]" id="name'+i+'" required >' +
        '<option disabled="disabled" selected="selected" value="" >Select Product</option>' +
        '@foreach($produk as $pro)' +
        '<option value="{{$pro->id}}">{{$pro->nama}}</option>' +
        '@endforeach'
)}

When I use the script in the same blade (view) file, it work, but when I separate the javascript function, and included the script on header, it show the blade syntax literally like {{ $pro->id }} (not the actual number from controller, but it does append a new row with {{ $pro->name }} as the value).当我在同一个刀片(视图)文件中使用脚本时,它可以工作,但是当我将 javascript function 分开,并将脚本包含在 header 中,它显示刀片}}语法controller 中的实际数字,但它确实 append 一个新行,其中 {{ $pro->name }} 作为值)。

So my question is, can I make a separate file for my javascript function?所以我的问题是,我可以为我的 javascript function 创建一个单独的文件吗? Because I'm using the script in create and edit view, so I want to make my view more cleaner.因为我在创建和编辑视图中使用脚本,所以我想让我的视图更清晰。

You should assign the $produk variable js variable when this blade file has been initiated.您应该在启动此刀片文件时分配$produk变量 js 变量。

Below code can render $produk data into JS const datatype variable.下面的代码可以将$produk数据渲染为 JS const 数据类型变量。

const produk = @json($produk)

Then you can do foreach inside the select tag然后你可以在select标签内做foreach

produk.forEach(element => {
    // ...use `element`...
});

Laravel template engine can not compile javascript files but you can write your javascript code inside blade file. Laravel 模板引擎无法编译 javascript 文件,但您可以在刀片文件中编写 javascript 代码。 add your script inside blade place your data into variable json formated then loop for each on of items you want在刀片中添加您的脚本将您的数据放入变量 json 格式化然后为您想要的每个项目循环

Try this example.blade.php试试这个例子。blade.php

<script type="text/javascript">
let produk = {!! json_encode($produk) !!};

function addRow(){
    var tr = $('<tr></tr>');
    var select = $(`<select class="form-control" name="addmore[]" required ></select>`);
    for(const pro in produk) {
        var td = $(`<option value="${ pro->id }">${ $pro->name }</option>`);
        select.append(td);
    }
    tr.append(select);
    $('#mainbody').append(tr);
}
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM