我正在製作一個使用大量事件的應用程序,並且我在一個指令的一個根元素中結束了多於6個事件偵聽器。這可以嗎?我應該在每次可能的時候使用ng-events,什麼時候可以使用element.on?在AngularJS中應該停止添加ng- [event]並使用element.on(「[event]」)的時間點?
我不得不承認,更直觀地看到影響每個元素的事件直接影響視圖,但我不知道它是否正確,在視圖中混合這麼多函數感覺很髒。
我正在製作一個使用大量事件的應用程序,並且我在一個指令的一個根元素中結束了多於6個事件偵聽器。這可以嗎?我應該在每次可能的時候使用ng-events,什麼時候可以使用element.on?在AngularJS中應該停止添加ng- [event]並使用element.on(「[event]」)的時間點?
我不得不承認,更直觀地看到影響每個元素的事件直接影響視圖,但我不知道它是否正確,在視圖中混合這麼多函數感覺很髒。
**ng-[events]**
是用來操縱模型的。
雖然element.on
(我會假設jquery)在角度範圍外工作,但不應在使用模型(操作數據)時使用它。
Angular允許創建一些叫做指令,如果你需要操縱Model(數據),那麼elemnent.on更有意義,因爲它是指令的目的,即將DOM與模型/控制器。
請訪問此鏈接瞭解了「角辦法」
http://blog.markmun.com/?p=409
的「角辦法」也被廣泛這裏討論:
這可能是時候創建一個包含所有這些事件監聽器功能的指令。也就是說,假設您重複使用同一組監聽器,並且這些監聽器的功能始終相同,並且可以從視圖的特定控制器和指令自己的通用控制器中抽象出來。
app.directive('MyEventHandler', function(){
return {
restrict: 'A', //attribute only
link: function(scope, elem, attr, ctrl) {
elem.bind('mouseenter', function(e) {
//do something here.
});
elem.bind('mouseleave', function(e) {
//do something here.
});
elem.bind('click', function(e) {
//do something here.
});
elem.bind('dblclick', function(e) {
//do something here.
});
}
};
});
直到那時通過給每個人一個單獨的行來格式化他們是管理視覺震動的好方法。
事件偵聽器的數量應該無關緊要,除非您爲同一元素多次運行相同的偵聽器。 – Entoarox
或在多個元素上運行相同的控制器代碼。 –