返回列表 發布新帖

使用microsite啟動,高代碼的測試頁面,Angular模板頁中,函數會不斷的被觸發

226 4
發表於 2025-4-9 10:25 | 查看全部 閱讀模式
問答

緊急程度

已完結
本帖最後由 徐俊賢 於 2025-4-9 10:24 編輯

前端高代碼開發

使用microsite啟動,高代碼頁面的測試頁面,
Angular模板頁中,不定時會觸發function
或者只要鼠標進入頁面,函數會不斷的被觸發


一般的模式的啟動則不會
angular 模板html中
  {{debug()}}


.ts function定義

debug()
{
  console.log(`debug`);  
}
附件為影片操作說明



附件: 您需要 登錄 才可以下載或查看,沒有賬號?立即注册

最佳答案

查看完整內容

問題中的寫法是模板函數。 這是angular自帶的機制,當你有滑鼠移入畫面或畫面有其他變動的時候,就會調動那個方法,會監測你綁定的方法裡面是否有變動,這是屬於angular自帶的機制,和微服務啟動沒有關係,正常都會調用,不屬於平台的相關問題,可以去angular官網看下語法中的變更檢測。 至於是本地啟動還是微服務啟動都是angular的機制,不是平台影響的,所以這問題我們理解是屬於angular語法相關的,這個需要請你去官網了解下 ...

評論4

鄭舜尹Lv.9 發表於 2025-4-9 11:15 | 查看全部
可能引發的原因:Angular預設的「髒檢查」策略會監聽所有非同步事件(如滑鼠移動、定時器等),觸發組件樹的全量偵測‌。
若函數綁定在模板事件(如(mouseenter))或表達式(如{{ func() }}),每次檢測都會執行函數。
直接在模板中呼叫函數(例如(mousemove)="handleMove()")會導致事件觸發時重複執行,未進行防手震/節流控制‌
建議
1、啟用OnPush策略:在組件裝飾器中設定changeDetection: ChangeDetectionStrategy.OnPush,僅當輸入屬性變化時觸發偵測
2、將模板中的(mouseenter)="debug()"改為(mouseenter)="debug$event)",避免每次偵測都執行函式
3、添加防手震節流
fromEvent(element, 'mousemove').pipe(debounceTime(300)).subscribe(() => {...});
徐俊賢樓主Lv.1 發表於 2025-4-10 11:15 | 查看全部
該函數並沒有註冊為mouse事件的handler
只有在microsite啟動模式情況,會有這現象

變成會不定時執行該函數
或者mouseover時會一直執行

主要想了解microsite與一般模式,什麼落差造成這個情況

鄭舜尹Lv.9 發表於 2025-4-10 16:23 | 查看全部
問題中的寫法是模板函數。

這是angular自帶的機制,當你有滑鼠移入畫面或畫面有其他變動的時候,就會調動那個方法,會監測你綁定的方法裡面是否有變動,這是屬於angular自帶的機制,和微服務啟動沒有關係,正常都會調用,不屬於平台的相關問題,可以去angular官網看下語法中的變更檢測。

至於是本地啟動還是微服務啟動都是angular的機制,不是平台影響的,所以這問題我們理解是屬於angular語法相關的,這個需要請你去官網了解下。

相關資料地址:https://www.angular.cn/guide/templates/binding


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?立即注册

×
鄭舜尹Lv.9 發表於 2025-4-10 16:35 | 查看全部
本地 ng serve啟動也會觸發,整個頁面只要有變更都會觸發,可能你點了頁面其他欄位,或者哪裡有數據變動就會觸發,這和microsite沒有關係,(我剛剛本地試過了,頁面有變動就會觸發,或者等待一段時間angular自帶的變更檢測也會觸發)

microsite啟動的底層也是和本地ng serve 一樣,只是microsite啟動的時候會加載平台的各個組件,這些組件是抓取遠端平台的數據,這個時候如果某個平台自己有變動,就會觸發變更檢測

mirosite啟動的時候,載入了平台的元件,平台元件裡面沒有使用OnPush策略,所以你畫面沒有變化,只是滑鼠移動到那塊區域,就會觸發變更事件
而你本地啟動的時候,本地應用程式碼裡面使用了OnPush策略,所以你本地滑鼠移動到那塊區域的時候,沒有觸發方法,沒有發現變動

總結:模板方法建議只是用於一些簡單的計算或獲取值,不要使用高頻的損耗性能的業務邏輯,或者調用服務等邏輯在裡面

回復

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

  • 加入Line諮詢
Copyright © 2026 鼎新數智股份有限公司 版權所有 All Rights Reserved. Powered by Discuz! X5.0
關燈 在本版發帖
即将开放
返回頂部
快速回復 返回頂部 返回列表