1. 程式人生 > >extjs中元件監聽器裡面的回撥函式說明

extjs中元件監聽器裡面的回撥函式說明

最近在看專案原始碼的時候發現瞭如下程式碼,其中_searchSupplierStore是JsonStore物件

_searchSupplierStore.on('beforeload',function(thiz,options){
  thiz.baseParams["cusCode"]="%"+Ext.getCmp('id_cusCodetext').getValue()+"%";
  thiz.baseParams["cusType"]=Ext.getCmp('id_cusTypetext').getValue();
  thiz.baseParams["addr"]= "%"+Ext.getCmp('id_addrtext').getValue()+"%"
});

看到這裡,其中的function(thiz,options)百思不得其解,thiz,和options是什麼呢,各種search專案程式碼,發現只有如此寫法,沒有相關說明。

經過查詢以及與別人探討,最後終於明白這玩意是什麼東西了。

JsonStore的on函式裡面有監聽器函式handler,具體寫handler的時候要根據store所觸發的事件去實現。比如beforeload事件,store的beforeload事件傳遞兩個引數,所以handler的實現裡面也會有兩個引數,而handler的實現函式裡面的引數是形參,所以名字隨便取,並且因為JavaScript是弱型別語言在宣告變數時 不需要註明變數型別,所以形參會出現只有亂七八糟的標誌符的樣子(例如function(thiz,options)),不像編譯語言的函式引數還要宣告型別。
on( String eventName, Function handler, [Object scope], [Object options] ) 


beforeload : ( Store this, Object options ) 
    this : Store
    options : Object
    The loading options that were specified (see load for details)這裡面有個連結,發現就是store的config options

總結一下,也許總的原因還是自己沒有從事件發生與處理機制去思考,去查詢吧。一般都是事件回撥函式繫結在某個物件上(即監聽器裡面的回撥函式),該物件的具體事件發生事,會呼叫回回調函式,同時也回把事件發生事的一些“現場”(以引數形式)傳遞給回撥函式。在extjs中這個發生事件的現場要去物件的事件函式裡面查詢,這樣才能在具體回撥函式中寫正確對應形參。

java awt中的事件機制是傳遞一個ActionEvent物件將現場傳遞。

總結是一種態度,更是一種進步

相關推薦

extjs元件監聽器裡面函式說明

最近在看專案原始碼的時候發現瞭如下程式碼,其中_searchSupplierStore是JsonStore物件 _searchSupplierStore.on('beforeload',function(thiz,options){  thiz.baseParams["cu

ajax 取出success函式資料可使用函式

回撥模式: function getMiddleData(callback) { $.ajax({ url:Request.get("/*url地址*/")

C++11function物件作函式的用法

Thread中的函式回撥方法,儲存著以後使用。 #ifndef THREAD_H_ #define THREAD_H_ #include <boost/noncopyable.hpp>

如何寫JavaScript的callback函式

 如何寫回調函式?  如果自己在寫一個方法或函式,你有可能會遇到需要一個回撥函式。下面就是一個簡單的常見回撥函式例子: function mySandwich(param1, param2, callback) { alert('Started eating my

nodejs request模組使用promise 返回函式的值

var request = require('request'); //exports.httprequest = (requestData) =>{ function httprequest(requestData){ return new Promise((resolve, rejec

JS函式(一)

一.前奏 多用在使用 js 寫元件時,尤其是元件的事件很多都需要回調函式的支援 假設   A是回撥函式,B是呼叫者,B引數裡一個是指向A的函式指標,即回撥A,同時另外的引數傳遞給A作為引數 二.JS中函式可作為引數傳遞,甚至在另一個函式內部返回 一旦作為引數

詳解ReactsetState函式

使用React過程中,中可以使用this.state來訪問需要的某些狀態,但是需要更新或者修改state時,一般而言,我們都會使用setState()函式,從而達到更新state的目的,setState()函式執行會觸發頁面重新渲染UI。但是呢,setState是非同步的!這就難

C++ 執行緒函式為靜態函式 及 類成員函式作為函式

 執行緒函式為靜態函式:   執行緒控制函式和是不是靜態函式沒關係,靜態函式是在構造中分配的地址空間,只有在析構時才釋放也就是全域性的東西,不管執行緒是否執行,靜態函式的地址是不變的,並不在執行緒堆疊中static只是起了一個裝飾的作用,所以二者並沒有必然的關係   執行緒也是一種

前端全棧工程化開發專題 — JS函式的深入解讀

1、回撥函式核心原理分析 js中的定時器及動畫 完整版動畫庫封裝 回撥函式初步講解 擴充套件更多的運動方式(非勻速) options物件引數的應用 ... 什麼是回撥函式? 把一個函式當做實參值傳遞給函式的形參變數(或者傳遞給函式,通過函式arguments獲取),在另外一個函

python Scrapy的spider函式的引數傳遞方法

通常有兩種方法,一種是使用meta進行引數傳遞。另一種是使用lambda進行引數傳遞。 方法一: 使用meta進行引數傳遞。 舉例如下: from scrapy.spiders import S

20181209——JS函式

字面上的理解,回撥函式就是一個引數,將這個函式作為引數傳到另一個函式裡面,當那個函式執行完之後,再執行傳進去的這個函式。這個過程就叫做回撥。 其實也很好理解對吧,回撥,回撥,就是回頭呼叫的意思。主函式的事先幹完,回頭再呼叫傳進來的那個函式。但是以前看過很多部落格,他們總是將回調函式解釋

js函式callback

前言其實我一直很困惑關於js 中的callback,困惑的原因是,學習中這塊看的資料少,但是平時又經常見,偶爾複製一下前人程式碼,功能實現了也就不再去追其原由,這麼著,這個callback的概念就越來越混亂,因為你總感覺它是你Ajax請求後呼叫的那個函式,又感覺它是你某一個函式中的形

對js函式的理解

一、什麼是回撥函式 一直接觸回撥函式這個名詞,但是不知道具體是幹什麼的,今天在百度上看到了一句話讓對回撥函式產生了一點興趣,那就是回撥函式的英文解釋: A callback is a function that is passed as an argument to an

Qt 學習之路 2(19):事件的接受與忽略(當重寫事件回撥函式時,時刻注意是否需要通過呼叫父類的同名函式來確保原有實現仍能進行!有好幾個例子。為什麼要這麼做?而不是自己去手動呼叫這兩個函式呢?因為我們無法確認父類的這個處理函式有沒有額外的操作)

版本: 2012-09-29 2013-04-23 更新有關accept()和ignore()函式的相關內容。 2013-12-02 增加有關accept()和ignore()函式的示例。 上一章我們介紹了有關事件的相關內容。我們曾經提到,事件可以依情況接受和忽略。現在,我們就

js replace函式

定義和用法 replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。 我們常用的是:    使用replace進行字元替換,第二個引數傳入替換的引數: "

結合Dialog的onClick()事件理解Android函式三部曲

App都少不了的一個需求,那就是Dialog彈窗,而且通常一個應用中都不止一個Dialog彈窗,多的時候可能達到六七個,那麼你是否會為你的應用重複寫六七個彈窗:ExitLoginDialog、DownDialog、UpdateDialog……如果是使用系統的Dialog還好,可以直接new一個

【JS】關於for迴圈的click函式索引值錯誤的思考

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=dev

js的for迴圈與非同步函式執行順序問題

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                for(i=localStorage.length-1;i>=0;i--){//從後往前依次取每條localstorage local_key=local

C語言學習及應用筆記之七:C語言函式及使用方式

  我們在使用C語言實現相對複雜的軟體開發時,經常會碰到使用回撥函式的問題。但是回撥函式的理解和使用卻不是一件簡單的事,在本篇我們根據我們個人的理解和應用經驗對回撥函式做簡要的分析。 1、什麼是回撥函式   既然談到了回撥函式,首先我們就要搞清楚什麼是回撥函式。在討論回撥函式之前,我們需要說明另一個概念,

關於對Java函式的理解

先來看幾段程式: 1.  首先定義一個類Caller,這個類裡面儲存一個介面引用。        public class Caller {     private MyCallInter