2012-02-01 48 views
3

我正在使用Yii框架。在幾頁上,我想使用jQuery添加一些自定義UI的東西。我想要的結果是這樣的:

$(document).ready(function() { 
    ... my code 
}); 

我發現建議使用這樣的事情:

Yii::app()->clientScript->registerScript('testscript'," 
    alert('hello world'); 
",CClientScript::POS_READY); 

不過,我有一個相當大的javascript代碼(100線),它是很難甚至可以在PHP字符串中讀取它(在編輯器中沒有語法突出顯示,也沒有代碼摺疊)。

必須有一些更好的方法來做到這一點?

我甚至不介意將代碼放在單獨的.js文件中,但我不知道如何將它加載到document.ready處理程序中?

回答

5

隔離您的代碼放到一個JS文件類/功能中,註冊與registerScriptFile ,然後使用registerScript調用該類/方法(然後將被添加到CClientScript使用的ready方法中)。

+0

乾淨整潔的解決方案。謝謝。 – 2012-02-03 22:27:33

2

嗯,我從來沒有用過yii,但在Google上搜索我發現你可以將javascript添加到yii。

我是一個.net人,但這個鏈接可能會幫助你。 http://www.yiiframework.com/forum/index.php?/topic/4778-what-is-the-best-form-to-load-jquery/

我只是猜測,但它可能會是這樣的......

Yii::app()->clientScript->registerScriptFile('/myScript.js'); 

而且在myScript.js你會寫......

$(document).ready(function() { 
    alert('hi'); 
    //js code goes here 
}); 

現在我只是猜測,但你可能必須在這之前包含jquery插件。因此,它可能像...

(PHP)

<?php Yii::app()->clientScript->registerCoreScript('jquery'); ?> 
<?php Yii::app()->clientScript->registerScriptFile('/myScript.js'); ?> 

(JQuery的)

$(document).ready(function() { 
    alert('hi'); //script goes here 
}); 
+0

這正是我要求的原因,如果我這樣做,就像你建議我最終有兩個文檔。 [R伊迪部分。一個在HTML中,另一個在外部JavaScript文件中。 – 2012-02-01 17:42:50

+2

我不明白你爲什麼要在HTML中使用'document.ready',只是把所有的javascript代碼放在外部文件中。在任何情況下,多個'document.ready'都可以正常工作,它們都將在DOM按照先來先服務的順序運行之後運行。 – Daniel 2012-02-01 22:58:54

+0

Yii自動在HTML中添加document.ready()以處理其他自動處理的內容,如客戶端驗證等。 – 2012-02-02 12:58:16

相關問題