【问题标题】:Initialize function on page页面初始化函数
【发布时间】:2022-01-01 23:40:51
【问题描述】:

我有一个js文件,里面有一个带多个参数的函数

function initSlider(slider, sliderRow, slides, CLONES_COUNT, doAutoPlay) {
. . .
}

我想在不同的页面上使用这个功能,但参数略有不同,假设其中一个页面会有

initSlider(slider, sliderRow, slides, (slides.length < 2) ? 0 : 1, slides.length > 1)

问题是,如何在页面本身调用这个初始化函数?

laravel 的常用页面,blade.php,最后有一个带有脚本的部分

@section('scripts')
<script src="/js/slider.js"></script>
@endsection

我试试

@yield('scripts')
@stack('slider-script')
</body>
@section('scripts')
other scripts
@endsection

@push('slider-script')
 <script src="/js/slider.js"></script>
@endpush

@push('slider-script')
<script>
   initSlider(slider, sliderRow, slides, (slides.length < 2) ? 0 : 1, slides.length > 1);
</script>
@endpush

但没有任何效果,错误

未捕获的 ReferenceError:未定义 initSlider

【问题讨论】:

  • 使用Stacks,在每个.blade.php文件中填写你需要的参数
  • @brombeer 我试过了,但没用,显然我误解了什么
  • 你不能在 Laravel 的同一个视图中使用 @stack('script')@push('script')

标签: javascript jquery laravel


【解决方案1】:

如果菲尔的回答不起作用。有一种可能性:您没有在文档中的任何地方声明@yield('script')@yield@section 一起使用,@stack@push 一起使用。不要让他们迷惑你。

【讨论】:

  • 我已经有@yield('scripts'),我很困惑如何做所有事情,因为没有任何效果(
  • @meow 看看我上面的评论,你不能在同一个 Blade 模板中使用 @stack('script') 和 @push('script')
  • 我将它们分开,添加到帖子中,现在一切都是如何为我完成的
【解决方案2】:

您可以将所有 Javascript 代码放在 @section('script')@endsection 之间。

slider.js

function initSlider(slider, sliderRow, slides, CLONES_COUNT, doAutoPlay) {
    console.log(slider);
}

刀片

@section('script')
<script src="/js/slider.js"></script>
<script>
    slides = [1,2];
    initSlider(1, 2, slides, (slides.length < 2) ? 0 : 1, slides.length > 1);
</script>
@endsection

如果你想使用stack方法:

  1. 在您的布局 php 文件中(例如 app.blade.php

    @stack('scripts')
    </body>
    </html>
    
  2. 在您当前的刀片文件中:

    @push('scripts')
     <script src="/js/slider.js"></script>
    @endpush
    
    @push('scripts')
    <script>
       slides = [1,2];
       initSlider(1, 2, slides, (slides.length < 2) ? 0 : 1, slides.length > 1);
    </script>
    @endpush
    

任何一种方式都应该有效。

【讨论】:

  • 得到错误Uncaught ReferenceError: initSlider is not defined
  • 你检查slider.js的路径了吗?它应该可以工作。
  • 所有路径都正确,一切正常,但我仍然收到此错误
  • 也许函数initSlider(slider, sliderRow, slides, (slides.length &lt; 2) ? 0 : 1, slides.length &gt; 1);本身需要以其他方式调用?
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多