一些背景:我來自.Net環境,我們必須在所有項目中使用MVVM將視圖與視圖模型分開。現在我正在開發自己的個人PHP項目,我決定使用相同的設計,並將視圖和視圖模型分開。有沒有什麼辦法可以在我的PHP MVVM設計中使用jQuery?
因此,在視圖中,我創建了一個viewmodel對象並在必要時調用後臺函數,並且在視圖中代碼僅用於提供顯示。
例子:
view.php
<?php
include('viewmodel.php');
$vm = new viewmodel.php();
if(some condition)
{
$vm->doSomething();
}
?>
<html>
<body>
//some form code
</body>
</html>
viewmodel.php
<?php
//includes
class viewmodel
{
function viewmodel()
{
}
function doSomething()
{
}
}
?>
現在,我已經瞭解了jQuery我想用它來使我的網頁更有活力,有減少來往服務器的流量,減少頁面刷新的需求。
我見過調用像這樣,讓jQuery來調用PHP頁面與一些後期的一些數據:
$.ajax({ url: '/my/site',
data: {action: 'test'},
type: 'post',
success: function(output) {
alert(output);
}
});
然而,這不再是面向對象設計,我不得不刪除所有的類定義從我的viewmodels這個工作。
是否有任何方法讓jQuery將這些調用視圖模型或使用jQuery意味着您必須返回到過程式編程風格?
'你是怎麼想的?'我指的是我稱之爲viewmodel函數'$ vm-> doSomething'的方式。我無法使用jQuery進行此調用。因此,如果我想在用戶點擊提交按鈕後使用jQuery來調用我的registerUser函數,我現在無法按照我現在編碼的方式進行操作。 –
'「使用jQuery來調用我的registerUser函數」 - 你可能會在這裏穿過這個術語。 jQuery不會調用PHP函數。 PHP運行服務器端,JavaScript運行客戶端。這兩者完全相互斷開。 jQuery會做的是調用一個單獨的「頁面」並接收響應。 PHP代碼如何生成該響應(例如,使用MVVM模式)完全超出了jQuery代碼的功能或甚至知道的範圍。 jQuery代碼會請求一個服務器端資源,它可以在發送響應之前在內部執行一些PHP代碼。 – David
好的,是的,我想我在服務器端和客戶端混淆了。我真的希望我不必改變太多,但我現在知道,如果我想使用jQuery,我將不得不作出一些改變。謝謝 –