/ * * *提供リスナーはwatch.js * / エクスポート機能setWatcher(ページ){ ましょうデータ = ; page.data LET時計 = page.watchと、 Object.keys(時計).forEach(V => { せキー = V .split( ' '); // の配列に切断するプロパティを見るために'。' LET nowData =データ; // nowDataにデータを割り当てる ための I = 0(LET; Iはkey.lengthを< - 1; I ++ ){ // 最後のものを除いて、配列のキー要素を、反復! nowData = nowData [キー[I]]; // そのキー属性を指すようにnowDataオブジェクトを } でlastKeyを聞かせ =キー[key.length - 1 ]。 // キー=== 'my.name' ===データnowDataは、[ 'マイ'] === data.my、lastKey === '名前'に今回想定し watchFunウォッチ= [V] .handlerてみましょうを|| ; [V]鑑賞// なしのハンドラとの互換性と双方向のテープ・ハンドラを 聞かせてディープ・ウォッチ= [V] .deep; // 未定義に比べ、深く設定されていない場合は 観察(nowData、watchFun、中lastKey、深い、ページ) ; // リスニングがでlastKeyオブジェクトnowData }) } / * * *リスナーがプロパティをリッスンし、機能を実行する * / 機能観察(OBJ、キー、watchFun、深い、ページ){ VAR valは= OBJ [キー]; // 解析は深いですヴァル真空ではないとのtypeofヴァル===「オブジェクト」(配列値の変化はまた、深さを監視する必要があります) IF &&(ヴァル深い!= nullを &&typeof演算===ヴァル'オブジェクト' ){ Object.keys(ヴァル).forEach(childKey => { // 下の各キーヴァルオブジェクトを介して 観察する(ヴァル、childKey、watchFun、ディープ、ページ); // 再帰呼び出しモニタ機能 }) } LET = これを、 Object.definePropertyは(OBJ、キーは、{ 設定可能:trueに、 :列挙trueに、 SET:関数(値){ watchFun.call(ページ、値、ヴァル); // 値が新しい値であります、ヴァル古い値 ヴァル= 値; IF(深い){ // ためにモニターの深さ、再びリスナーオブジェクトは、そのプロパティを監視する場合。 (OBJ、キー、watchFun、深い、ページ)を観察します。 } }、 得る:関数(){ 戻りヴァルと、 } }) } module.exportsは = { setWatcher:setWatcher }
=必要CONSTを見る( "../../../ utilsパッケージ/ watch.js" ); / * * *ライフサイクル機能-ページのロードをリッスン * / のonLoad:機能(オプション){ watch.setWatcher(この) ; // リスナーを設定し、オンロードで呼び出すことが推奨される // のログイン削除 本.getLOginInfo(); }、 時計:{ 'prescriptionInfo.prescr_type':関数(値、OLDVALUE){ IF(値== 0 ){ / / にconsole.log( '処方薬'); = 'prescriptionInfo.is_bottled'ペットボトル入りのlet ; のlet taste_type = 'prescriptionInfo.taste_type' ; is_pregnantましょう = 'prescriptionInfo.is_pregnant' ; is_sufferingましょう = 'prescriptionInfo.is_suffering'を。 suffering_numましょう = 'prescriptionInfo.suffering_num'を。 この.setData({ [ボトル] 0 、 [taste_type]: 1 、 [is_pregnant]: 0 、 [is_suffering]: 0 、 [suffering_num]: 1 、 })。 } であれば(値== 2 ){ // はconsole.log( '膏方')。 is_pregnant = 'prescriptionInfo.is_pregnant'をしましょう。 is_sufferingましょう = 'prescriptionInfo.is_suffering'を。 suffering_numましょう = 'prescriptionInfo.suffering_num'を。 この.setData({ [is_pregnant] 0 、 [is_suffering]: 0 、 [suffering_num]: 3 、 })。 } } }、