2015-04-01 75 views
0

我遵循以下指南http://www.yiiplayground.com/yii2/web/index.php?r=ajax/index如何包含使用資產的js文件。 /frontend/assets如何使用yii2高級模板上的資產包含js文件

<?php 
namespace frontend\assets; 

use yii\web\AssetBundle; 

class AjaxAsset extends AssetBundle{ 
    public $basePath = '@frontend'; 
    public $baseUrl = '/view'; 
    public $css = [ 

    ]; 
    public $js = [ 
     'ajax/ajax.js', 
    ]; 
    public $depends = [ 
    'yii\web\YiiAsset', 
    'yii\bootstrap\BootstrapAsset', 
    ]; 

} 
?> 

下的以下文件我已經創建了我設法讓它通過更新以下

//public $basePath = '@webroot'; 
//public $baseUrl = '@web'; 
public $sourcePath = '@frontend/views/ajax'; 

但是我現在有使用JavaScript文件有問題的工作。

的意見/ AJAX/ajax.js

'reportsviewDone': function (response) { 
    // This is called by the link attribute 'data-on-done' => 'simpleDone' 
    console.dir(response); 
    $('#css3buttons').html(response.body); 
} 

我得到語法錯誤

SyntaxError: missing ; before statement 
'reportsviewDone': function (response) { 

我已經改變它固定它

var ajaxCallbacks = { 
    'reportsviewDone': function (response) { 
     // This is called by the link attribute 'data-on-done' => 'simpleDone' 
     console.dir(response); 
     $('#css3buttons').html(response.body); 
    } 
} 

回答

0

你真的需要單獨的資產呢?如果沒有,請利用高級模板爲您所做的工作(他們不會將其稱爲模板),請使用其站點範圍的AppAsset.php。把

public $js = [ 
     'js/ajax.js', 
    ]; 

那兒,ajax.js到前端/網絡/ JS

我很積極的,views不是js文件的最好的地方。

在對$basePath$baseUrl進行更改之前,請確保您使用的是properly以及aliases

+0

他們爲什麼要這樣做呢? http://www.yiiplayground.com/yii2/web/index.php?r=ajax/index – shorif2000 2015-04-01 14:30:32

+0

我們只能猜測。該示例提出有許多視圖,並且每個視圖都有專用的腳本。但是,如果js腳本足夠大以從分離它們中獲益,則最好使用js構建系統和js模塊,而不是僅將條件有條件地加載爲Yii資產。 Yii資產主要用作css + js的可重用捆綁包,可以通過它們的版本來識別(例如,Yii如何處理小部件資產,Bootstrap和jQuery)。 雖然它是一個很好的例子,可以將js動態添加到頁面中,而不會造成任何html混亂。 – estus 2015-04-01 15:29:58