通信の構成要素間の#は、親コンポーネントアレイデータvモデルサブアセンブリを変更することによって変更することができます
* V-モデルサブコンポーネントは、valueプロパティを受け入れる必要があり、我々はこの$のEMIT(「入力」、「データ」)を開始する必要があります;
Vモデル=「posStart」=== @入力=「入力」:自分自身を達成するために=「posStart」//「入力」の値は、基礎となる書き込みを持っていません
*同期サブアセンブリサブアセンブリ同期コンポーネントの値は、あなたがこの$を発する必要がある、VALUE1の親値に同意する必要があります。(「更新:VALUE1」、「データ」)
:Value1.sync =「posStart」=== @Update:VALUE1は=「入力」:VALUE1 =「posStart」// ===親コンポーネント書き込みせずに入力同期で関数を記述する必要性の背後にあります
*伝統的な小道具は$発します
#親コンポーネントのサブアセンブリ関数を呼び出します
*代わりに特定のコンポーネントが親コンポーネントは、この$ refs.refName.fn(と、サブコンポーネントに加えREFを呼び出す場合);
あなたはすべてのメソッドのサブコンポーネントを呼び出す必要がある場合*、あなたは親コンポーネント、メソッド呼び出しのサブコンポーネントで$子どもを使用することができます
1.親コンポーネントのApp
1 <テンプレート> 2 <DIV ID = "アプリケーション"> 3 <! - 4 <ScrollBall @入力= "入力"値= "posStart"色= "緑色":ターゲット= "posTarget"> </ ScrollBall> - - > 5 <! -实现底层Vモデル入力= "入力" @:値= "posStart"父组件中不需要写入力函数Vモデル底层会自己写赋值- > 6 <ScrollBall Vモデル= "posStart"色= "黄":ターゲット= "posTarget"> </ ScrollBall> 7 <ScrollBall REF = "ball2":value.sync = "posStart"色= "赤":ターゲット= "posTarget"> </ ScrollBall > 8 <! - 9 < ScrollBallの@Update:VALUE1 = "入力":VALUE1 = "posStart"色= "赤":ターゲット= "posTarget"> </ ScrollBall> 10 - > 11 <ボタン@クリック= "stopHandle">停止</ボタン> 12 </ div> 13 </テンプレート> 14 15 <スクリプト> 16 "./components/ScrollBall.vue"からインポートScrollBall 。 17エクスポートデフォルト{ 18 名: "APP" 、 19 のBeforeUpdate(){ 20 // はconsole.log(this.posStart)。 21 }、 22個の データ(){ 23 リターン{ 24 posStart:160 、 25 posTarget:400 26 }。 27 }、 成分:{ 29 ScrollBall 30 }、 31個 の方法:{ 32 stopHandle(){ 33 本。$ children.forEach(ELE => { 34 ele.stop(); 35 })。 36 はconsole.log(この$子供。); 37 // 。この$のrefs.ball2.stop(); 38 } 39 / * 入力(値){ 40 this.posStart =値。 41 } * / 42 } 43 }。 44 </スクリプト> 45 46<スタイルLANG = "少ない"> 47 </スタイル>
2.サブコンポーネント
1 <テンプレート> 2 <DIV CLASS = "ボール":スタイル= "スタイル":ID = "ballId"> </ div> 3 </テンプレート> 4 5 <スクリプト> 6エクスポートデフォルト{ 7 名"ScrollBall" 、 図8は、 マウントされ(){ 9 LETボール=のdocument.getElementById(この.ballId)。 10 // 页面加载后让小球运动 11 LET FN =()=> { 12 =左LET この.VALUE。 13 // はconsole.log( "左:"、左)。 .TARGET){ 15 リターン cancelAnimationFrame(この.timer); 16 } 17。 // 左+ = 5; 18は 、この。$ EMIT( "INPUT"、左+ 1); // 父に変更する 19。 この $ EMIT。 ( "更新:値"。、左+ 1 ); 20は = ball.style.transform `($ {左} PX)翻訳、 21はであり 、この .timer = requestAnimationFrameの(FN); 22である } 23れる この .timer requestAnimationFrameの=(FN ); // この関数は一度だけ実行される 24 }、 25の 小道具:{ 26であります 色:{ 27 タイプ:文字列、 28 デフォルト: "白" 29 }、 30 値:{ 31 タイプ:Number、 32 デフォルト:0 33 }、 34 ターゲット:{ 35 タイプ:Number、 36 デフォルト:0 37 } 38 } 、 39 計算:{ 40 スタイル(){ 41 リターン {背景:本.color} 42 } 43 ballId(){ 44 リターン "ボール" +これは._uid。 45 } 46 } 47個 の方法:{ 48 ストップ(){ 49 cancelAnimationFrame(この.timer)。 50 } 51 } 52 }。 53 </スクリプト> 54 <スタイルのlang = "少ない"> 55 .ball { 56 幅:100pxに。 57 高さ:100pxに。 58 国境:1pxの固体#000 ; 59 境界半径:50% 。 60 箱のサイズ変更:BORDER- ボックス。 61 } 62 </スタイル>
知識ポイントを含みます:
VUE-cliの生成ディレクトリ構造
VUEは、名前を作成します
サードパーティ製のパッケージ格納ディレクトリsはnode_modules
公共の静的リソースがホストされています
SRCソース
-assetsリソースヘッドロードストア静的リソース
ストレージディレクトリの他の成分-components
-App.vueルートコンポーネント
-main.jsエントリ・ファイル
.gitignore gitのファイルを無視します
.vue単一ファイルアセンブリ
テンプレートテンプレートコンポーネント
なお、ルートノードのみ
JSスクリプトコンポーネントの構成コンポーネントオプション
スタイルスタイルは、グローバルずに、つまり、唯一の現在のコンポーネントのために自分のスタイルをスコープのスコープ
VUEは、基本的なコンポーネントの開発を使用します
scrollball
代わりに、プロジェクトアプリケーションVUEの##のNPMを作成する-gの@ VUE / CLIサービス - グローバルインストール
VUEが終了した後、##奉仕
#はVUE-適用を作成し、プロジェクトのVUEを作成します
カラーサブアセンブリを受信した後、必要な動的バインディング:スタイル= {背景:色}を算出することができる属性:背景色渡す#親コンポーネントサブアセンブリスタイル=「stlyleComputed」
#親成分値場合、通過帯域可変自体、ストリング無し
#サブアセンブリ親コンポーネント@でイベントを結合、$が発する親コンポーネントの値を変更
#は、setTimeoutをrequestAnmiationFrameの代わりに使用することができます
データの親コンポーネントを変更することにより可能な限り#は、新しいサブアセンブリが付属してい