>  기사  >  위챗 애플릿  >  미니 프로그램 개발 기초 이벤트 (9)

미니 프로그램 개발 기초 이벤트 (9)

Y2J
Y2J원래의
2017-04-25 09:42:391613검색

앞서 언급했듯이 WeChat 애플릿 프레임워크는 로직 레이어와 UI 레이어를 분석하는 설계 방식입니다. 이 설계 방식은 두 가지 문제를 해결해야 합니다.

UI 레이어는 로직의 변화에 ​​반응합니다.
UI 레이어는 사용자의 작업을 로직 레이어에 피드백합니다

앞서 언급한 데이터 바인딩은 첫 번째 문제를 해결하며, 이벤트 그럼 두 번째 문제를 풀어보세요

이벤트란 무엇인가요
이벤트는 뷰 레이어에서 로직 레이어로의 통신 방식입니다.
이벤트는 처리를 위해 사용자 행동을 논리 계층에 피드백할 수 있습니다.
이벤트는 구성 요소에 바인딩될 수 있으며, 트리거 이벤트에 도달하면 논리 레이어의 해당 이벤트 처리 기능이 실행됩니다.
이벤트 객체는 ID, 데이터세트, 터치와 같은 추가 정보를 전달할 수 있습니다.

요약하자면, 이벤트는 어떤 일이 일어나는 것을 의미하며, 일반적으로 사용자는 버튼을 클릭하거나 휴대폰 화면에서 손가락을 슬라이드하는 등의 작업을 수행합니다. 이벤트가 발생하면 프레임워크는 사용자 작업에 응답할 수 있도록 이벤트 처리 함수(있는 경우)를 호출합니다.

이벤트 바인딩

은 이벤트 바인딩을 사용하여 사용자 작업에 대한 응답을 완료합니다. 예를 들어 view 태그의 tap 이벤트를 처리하려면 을 추가한 다음 .js에 bindtap = 'tapName' 함수를 추가합니다. tapName

//wxml
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

//.js
Page({
  tapName: function(event) {
    console.log(event)
  }
})

이벤트 객체에는 이벤트에 대한 일부 데이터가 포함됩니다.

대상: 이벤트를 트리거한 구성 요소
currentTarget: 현재 구성요소
type: 이벤트 유형
timeStamp: timestamp(페이지가 열린 후 경과된 밀리초 수) 이벤트가 발생한 시점까지)
touches: 터치 포인트를 포함하는 배열(멀티터치)
changedTouches: 변경된 터치 포인트의 배열(멀티터치)
세부정보: 추가 맞춤 정보

버블 이벤트와 비버블 이벤트

target과 currentTarget 이벤트가 버블 이벤트버블이 아닌 이벤트

버블 이벤트의 두 가지 범주로 나누어지기 때문입니다. 구성 요소에서 이벤트가 발생합니다. 트리거된 후 이벤트는 상위 노드로 전달됩니다.
비버블 이벤트: 구성 요소에서 이벤트가 트리거되면 해당 이벤트가 상위 노드로 전달되지 않습니다.


tap

이벤트는 버블링 이벤트입니다(이것이 위 예의 eventcurrentTarget이 포함된 이유입니다). 버블링 이벤트에는 | 트리거 조건|| -------------|
| 손가락 터치 동작 시작
| 터치 후 손가락 이동 | 터치 취소 | 전화 수신 알림 등 손가락 터치 종료 | 터치 액션 종료 |
| 탭 | 손가락 터치 후 바로 나가기|
| 손가락 터치 후 350ms 이상 경과 후 나가기|

버블링 이벤트가 필요한 이유는 무엇입니까?

버블링 이벤트를 통해 일부 기능을 더욱 편리하게 구현할 수 있습니다.

예를 들어, 프로그램에는 사용자의 아바타와 이름이 포함된 보기가 있습니다. 사용자가 아바타나 이름을 클릭하면 사용자 세부정보 페이지로 들어갑니다. 버블링 이벤트가 없으면 아바타와 이름의 클릭 이벤트를 처리해야 합니다. 이제 외부 레이어에 컴포넌트를 래핑하고 해당 컴포넌트의 이벤트를 처리하기만 하면 됩니다.

이벤트 버블링 방지

어떤 경우에는

catchap

과 같은

catch 이벤트 바인딩

을 사용할 수 있습니다. , 이벤트의 버블링 동작을 방지할 수 있습니다. 다음 코드 예제를 사용하면 버블링 이벤트에 대한 이해를 높일 수 있습니다.

//.wxml
<view id="outter" bindtap="handleTapOutter">
  我是父亲节点
  <view id="middle" catchtap="handleTapMiddle">
    我是儿子节点
    <view id="inner" bindtap="handleInner">
      我是孙子节点
    </view>
  </view>
</view>

//.js
Page({
  handleTapOutter: function(event) {
    console.log("父亲节点被点击")
  },
  handleTapMiddle: function(event) {
    console.log("儿子节点被点击")
  },
  handleInner: function(event) {
    console.log("孙子节点被点击")
  },
})
모든 수준에서 노드의 탭 이벤트 바인딩 방법을 수정하고 출력 로그에서 어떤 변경 사항이 발생하는지 확인하세요. .

위 내용은 미니 프로그램 개발 기초 이벤트 (9)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.