修复所有 Alpine 组件表达式报错

彻底移除 Proxy/has 陷阱方案,改用显式方法存根:
- userCardComponent 补充 35 个方法存根
- marriage-modals 8 个组件改用 createLazyAlpineComponent
- weddingSetup/weddingEnvelope 等 Modal 均正确包装
控制台现在应该没有任何 Alpine Expression Error
This commit is contained in:
pllx
2026-04-28 09:42:18 +08:00
parent e50502d8f6
commit 1c067e452b
2 changed files with 80 additions and 44 deletions
+77 -9
View File
@@ -769,16 +769,49 @@ if (typeof window !== "undefined") {
window.marriageAction = (...args) => _marriageStatus.wrap('marriageAction')(...args);
window.openMarriageStatusModal = (...args) => _marriageStatus.wrap('openMarriageStatusModal')(...args);
window.appendSystemMessage = (...args) => _marriageModals.wrap('appendSystemMessage')(...args);
window.divorceConfirmModal = (...args) => _marriageModals.wrap('divorceConfirmModal')(...args);
window.divorceRequestModal = (...args) => _marriageModals.wrap('divorceRequestModal')(...args);
window.marriageAcceptedModal = (...args) => _marriageModals.wrap('marriageAcceptedModal')(...args);
window.marriageDivorcedModal = (...args) => _marriageModals.wrap('marriageDivorcedModal')(...args);
window.marriageIncomingModal = (...args) => _marriageModals.wrap('marriageIncomingModal')(...args);
window.marriageProposeModal = (...args) => _marriageModals.wrap('marriageProposeModal')(...args);
window.openProposeModal = (...args) => _marriageModals.wrap('openProposeModal')(...args);
window.openWeddingSetupModal = (...args) => _marriageModals.wrap('openWeddingSetupModal')(...args);
window.weddingEnvelopeModal = (...args) => _marriageModals.wrap('weddingEnvelopeModal')(...args);
window.weddingSetupModal = (...args) => _marriageModals.wrap('weddingSetupModal')(...args);
// ── 婚姻弹窗 Alpine 组件(createLazyAlpineComponent 懒加载) ──
window.marriageProposeModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"marriageProposeModal",
{ show: false, targetUsername: "", error: "", loading: false, rings: [], selectedRing: null, selectedTier: null, tiers: [], selectedTierId: null, canAfford: false, sending: false, doPropose: () => {} }
);
window.marriageIncomingModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"marriageIncomingModal",
{ show: false }
);
window.marriageAcceptedModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"marriageAcceptedModal",
{ show: false }
);
window.marriageDivorcedModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"marriageDivorcedModal",
{ show: false }
);
window.divorceConfirmModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"divorceConfirmModal",
{ show: false }
);
window.divorceRequestModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"divorceRequestModal",
{ show: false }
);
window.weddingSetupModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"weddingSetupModal",
{ show: false }
);
window.weddingEnvelopeModal = createLazyAlpineComponent(
() => import("./chat-room/marriage-modals.js"),
"weddingEnvelopeModal",
{ show: false }
);
window.renderMarriedList = (...args) => _marriageStatus.wrap('renderMarriedList')(...args);
window.renderMarriageStatus = (...args) => _marriageStatus.wrap('renderMarriageStatus')(...args);
window.switchMarriageTab = (...args) => _marriageStatus.wrap('switchMarriageTab')(...args);
@@ -855,7 +888,42 @@ if (typeof window !== "undefined") {
targetMarriage: null,
marriageLoading: false,
mySex: "",
assetCache: [],
// 方法存根(防止 Alpine with(scope) 表达式找不到方法而报错)
hasPositionPermission: () => false,
canManageTargetByDuty: () => false,
assetValueLabel: () => "",
canRevealAssetValue: () => false,
displayAssetValue: () => "",
assetValueTitle: () => "",
assetValueStyle: () => "",
revealAssetValue: () => {},
displayBankBalance: () => "",
bankBalanceTitle: () => "",
bankBalanceStyle: () => "",
revealBankBalance: () => {},
toggleFriend: () => {},
handleConfirmDivorce: () => {},
doDivorce: () => {},
fetchUser: () => {},
_loadPositions: () => {},
doAppoint: () => {},
doRevoke: () => {},
kickUser: () => {},
muteUser: () => {},
warnUser: () => {},
banUser: () => {},
banIpUser: () => {},
loadWhispers: () => {},
sendAnnounce: () => {},
sendGift: () => {},
toggleGiftPanel: () => {},
toggleGiftGoldPanel: () => {},
sendGiftGold: () => {},
sendReward: () => {},
_headers: () => ({}),
$alert: (...args) => window.chatDialog?.alert(...args),
$confirm: (...args) => window.chatDialog?.confirm(...args),
$prompt: (...args) => window.chatDialog?.prompt(...args),
},
"showUserModal"
);