Laravel 5.2 - 使用自己的CSS&渲染局部视图JS

时间:2016-04-21 07:49:52

标签: ajax partial-views laravel-5.2

我在GOOGLE先生上搜索但没有运气,我想用ajax加载页面内容。我需要部分渲染两个部分,

  • 列表视图
  • 地图视图

这是我的代码。

JS代码:

$.ajax({
    method: 'POST',
    type : 'POST',
    url  : main_path+'/homeservices/getData_Map',
    beforeSend: function(){
    $(".se-pre-con").fadeIn("slow");
    },
    data: {'_token': $('meta[name=_token]').attr('content')},
    success :  function(data)
    {
      $('#map_hs').html('');
      $("#map_hs").html(data['map_data']);
      $('.list_overmap').empty();
      $('.list_overmap').html(data['list_data']);
     }
  });

这是我的控制器代码

public function getData_Map() {
    $input = Request::all();
    if(Request::isMethod('post') && Request::ajax()) {
        $hs_list = $this->services_list->getHomeServices();
        $returnHTML = view('homeservices.mapcontents')->with('servicesMap', $hs_list)->render();
        $returnHTML_list = view('homeservices.listcontents')->with('servicesList', $hs_list)->render();
        return response()->json(array('success' => true, 'map_data'=>$returnHTML,'list_data'=>$returnHTML_list));

     }
}

我有这些文件

  • 模板文件 homeservices
  • 我有查看文件
  • 我有两个部分文件

这是我的视图文件

@extends('layouts.homeservices')
@section('content')
<div class="list_overmap"></div>
<div id="map_hs" ></div>
@endsection

现在,有不同的css&amp;每个部分文件的js文件。例如,地图视图有两个额外的文件

<link rel="stylesheet" href={{URL::asset('css/lightslider.css')}}"/>
<script src="{{URL::asset('public/src/js/lightslider.js')}}"></script> 

现在我的代码给了我错误

.lightSlider is not a function

所以我的问题是

  • 我是否只需要在部分视图或模板文件中包含额外文件?
  • 什么是最好的地方,我应该包括js代码&amp;文件和css代码以及与这些部分视图相关的文件?

注意:请帮我解决我的问题,在此之前我花了太多时间寻找解决方案。

1 个答案:

答案 0 :(得分:0)

我自己才发现这一点,所以不要引用我,但我相信......

@yield&amp; @section - 将@yield放在您想要在视图中使用@section的布局中,您想要从中呈现内容。 您只能在任何扩展它的视图中使用@section一次

即。布局(我通常如何去做)

<!DOCTYPE html>
<html lang="en">
<head>
    @yield('styles')
</head>
<body id="app-layout">
    @yield('content')
    @yield('scripts')
</body>
</html>

即。儿童观点

@extends(app/layout)
@section('styles')
@stop
@section('section')
@stop
@section('scripts')
@stop

@stack&amp; @push - 以同样的方式工作,但根据我的经验,可以从任何扩展布局的视图中多次调用@push。

即。布局

<!DOCTYPE html>
<html lang="en">
<head>
    @stack('styles')
</head>
<body id="app-layout">
    @yield('content')
    @stack('scripts')
</body>
</html>

即。儿童观点

@extends(app/layout)
@push('styles')
@endpush
@section('section')
    @include('partial')
@stop
@push('scripts')
@end

即。部分

<h1> Map HTML that you are creating partial for </h1>
<div class="list_overmap"></div>
<div id="map_hs" ></div>
@push('styles')
<link rel="stylesheet" href={{URL::asset('css/lightslider.css')}}"/>
@endpush

@push('scripts')
<script src="{{URL::asset('public/src/js/lightslider.js')}}"></script> 
@end

不确定这是否是最好的方法,但这也是在类似情况下帮助我的原因。