2009-12-10 54 views
0

我的MVC控制器負責將所需的onload javascript傳遞給我的視圖對象,該對象將其插入到我的主頁面模板的底部。MVC控制器作業?

我的問題是......我應該存儲實際的onload JS腳本在我的控制器,或者我應該把它存放在我的模型,並有控制器從那裏拉呢?

我的困惑是植根於一個事實,即它不是一個真正的業務邏輯...

選項1:

/* --- js store in my controller --- */ 
$page->add_js_onload('various jquery scripting'); 

選項2:

/* --- js fetched from my model --- */ 
$page->add_js_onload($this->model->fetch_onload_js()); 

哪一個更清潔,更可擴展性(或者更優雅)?

回答

2

當你說「這不是真正的商業邏輯」時,你是完全正確的。當爲網絡進行MVC時,您應該考慮使用JavaScript代碼作爲視圖或部分視圖(例如/views/mywidget/myfile.js.php--在這種情況下,如果需要,您可以將動態數據加載到該視圖中)或完全獨立的實體(例如/public/js/myfile.js,在您的看法中將包含script標籤)。具體取決於你正在使用的MVC框架。

在您的控制器或模型中保留實際的JS代碼違反了MVC原則,就像將HTML代碼放在那裏一樣。

+0

所以你說的是有一個單獨的視圖爲頁面的js,然後我可以配置它通過控制器,然後將其注入到html視圖? – johnnietheblack 2009-12-10 22:49:01

+0

是的,基本上,儘管我認爲將JS作爲單獨文件加載(

2

你應該在你的控制器中做到這一點。但我只會將JavaScript文件的名稱傳遞給視圖,並使用HTML腳本標記將其加載到視圖中。
這使得它更容易維護您的Javascript代碼。

只能將模型中的代碼放入業務邏輯並與模型緊密相關。

+0

+1用於說出我要做什麼,並且更簡潔。 – iandisme 2009-12-10 19:34:43