Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
在javascript数组中动态添加数据_Javascript_Laravel - Fatal编程技术网

在javascript数组中动态添加数据

在javascript数组中动态添加数据,javascript,laravel,Javascript,Laravel,我有一个控制器: public function main() { $user=User::find(1); return view('home')->with('user',$user); } public function main() { $user = User::find(1); $data = [ 'user' => $user, 'dataChart' => [$user->trav

我有一个控制器:

public function main()
{
    $user=User::find(1);
    return view('home')->with('user',$user);
}
public function main()
{
    $user = User::find(1);
    $data = [
        'user'      => $user,
        'dataChart' => [$user->travel, $user->food, $user->misc]
    ];
    return view('home', $data);
}
在home.blade.php视图中,我需要获取用户的属性travel、food、misc。我可以使用$user->travel、$user->food、$user->misc得到那些整数。 但是,我必须在饼图中显示这些费用。所以,我用

这将显示静态数据300、50和100。如何动态添加这些数据?我需要数据:[300,50,100],类似于数据:[$user->travel,$user->food,$user->misc],

使用相同的符号:

data: [{{$user->travel}}, {{$user->food}}, {{$user->misc}}]
这样,模板引擎将呈现值,当加载到浏览器中时,javascript将使用它。

使用相同的符号:

data: [{{$user->travel}}, {{$user->food}}, {{$user->misc}}]
这样,模板引擎将呈现值,当加载到浏览器中时,javascript将使用它。

尝试:

<?php

$travel = $user->travel;
$food = $user->food;
$misc =  $user->misc;

$data = "[$travel,$food,$misc]";
?>

Travel Expenses:{{$travel}}<br>
    Food Expenses:{{$food}<br>
    Miscellaneous Expenses:{{$misc}}<br>

    <canvas id="myChart"></canvas>

    <script>
     var ctx = document.getElementById("myChart");
            var data = {
                labels: labels: [
                "Travel",
                "Food",
                "Miscellaneous",
                datasets: [
                    {
                        data: {{$data}},
                        backgroundColor: [
                            "#FF6384",
                            "#36A2EB",
                            "#FFCE56"
                        ],
                        hoverBackgroundColor: [
                            "#FF6384",
                            "#36A2EB",
                            "#FFCE56"
                        ]
                    }]
            };
        </script>
尝试:


您可以在控制器中执行类似操作:

public function main()
{
    $user=User::find(1);
    return view('home')->with('user',$user);
}
public function main()
{
    $user = User::find(1);
    $data = [
        'user'      => $user,
        'dataChart' => [$user->travel, $user->food, $user->misc]
    ];
    return view('home', $data);
}
在你看来:

<script>
var ctx = document.getElementById("myChart");
var data = {
    labels: [
      "Travel",
      "Food",
      "Miscellaneous"
    ],
    datasets: [{
        data: {{$dataChart}},
        backgroundColor: [
            "#FF6384",
            "#36A2EB",
            "#FFCE56"
        ],
        hoverBackgroundColor: [
            "#FF6384",
            "#36A2EB",
            "#FFCE56"
        ]
    }]
};
</script>

这就解决了您的问题。

您可以在控制器中执行类似操作:

public function main()
{
    $user=User::find(1);
    return view('home')->with('user',$user);
}
public function main()
{
    $user = User::find(1);
    $data = [
        'user'      => $user,
        'dataChart' => [$user->travel, $user->food, $user->misc]
    ];
    return view('home', $data);
}
        Travel Expenses:<span id='travel'>{{$user->travel}}</span><br>
 Food Expenses:<span id='food'>{{$user->food}}</span><br>
 Miscellaneous Expenses:<span id='misc'>{{$user->misc}}</span>

        <canvas id="myChart"></canvas> <script> 
        var ctx = document.getElementById("myChart");

        var data = { 
           labels: [
              "Travel", 
              "Food", 
              "Miscellaneous"
           ], 
          datasets: [ { 
             data: [
                document.getElementById('travel').innerHTML, 
    document.getElementById('food').innerHTML, 
    document.getElementById('misc').innerHTML],
             backgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], 
             hoverBackgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ] 
           }] 
        }; 
    </script>


Try this.
在你看来:

<script>
var ctx = document.getElementById("myChart");
var data = {
    labels: [
      "Travel",
      "Food",
      "Miscellaneous"
    ],
    datasets: [{
        data: {{$dataChart}},
        backgroundColor: [
            "#FF6384",
            "#36A2EB",
            "#FFCE56"
        ],
        hoverBackgroundColor: [
            "#FF6384",
            "#36A2EB",
            "#FFCE56"
        ]
    }]
};
</script>

这就解决了你的问题。

我不懂PHP,但你需要做的就是从PHP服务器内联渲染它们,所以我猜[{{{$user->travel},{{$user->food},{{{$user->misc}}]直接在你的javscript代码中,PHP将渲染出300,50100Cleary我懂PHP!我不懂PHP,但你所需要做的就是从PHP服务器内联呈现它们,所以我猜[{{$user->travel},{{{$user->food},{{{$user->misc}]直接在你的javscript代码中,PHP将呈现300,50100Cleary我知道PHP!
        Travel Expenses:<span id='travel'>{{$user->travel}}</span><br>
 Food Expenses:<span id='food'>{{$user->food}}</span><br>
 Miscellaneous Expenses:<span id='misc'>{{$user->misc}}</span>

        <canvas id="myChart"></canvas> <script> 
        var ctx = document.getElementById("myChart");

        var data = { 
           labels: [
              "Travel", 
              "Food", 
              "Miscellaneous"
           ], 
          datasets: [ { 
             data: [
                document.getElementById('travel').innerHTML, 
    document.getElementById('food').innerHTML, 
    document.getElementById('misc').innerHTML],
             backgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], 
             hoverBackgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ] 
           }] 
        }; 
    </script>


Try this.