Vue共通フィーチャー
25837 ワード
Vue共通特性
フォームアクション input単行テキスト textareaマルチテキスト selectドロップダウン radioラジオボックス checkboxマルチセレクタ フォームフィールド修飾子 number:数値に変換する(入力ボックスは文字列として入力され、この修飾子は入力文字列を自動的に数値に変換する) . trim:開始と終了のスペースを削除 lazy:デフォルトinput(トリガ)イベントをchange(フォーカスを失う)イベント に切り替える
カスタムコマンドカスタム命令が必要な理由:内蔵命令が要求を満たしていない 構文規則:(例:要素フォーカスの自動取得)用法
パラメータ付きカスタムコマンド(例:要素の背景色を変更)
ローカルコマンド(適用範囲に制限があります)
計算プロパティ
式の計算ロジックは複雑な場合があります.計算プロパティを使用すると、テンプレートの内容をより簡潔にすることができます.
計算プロパティとメソッドの違い計算プロパティは、それらの依存に基づいてキャッシュされます.計算結果はキャッシュされ、計算値が変わらない限り、再呼び出しは関数を再実行せず、計算結果 に直接戻ります.メソッドにキャッシュは存在しません:呼び出しごとに関数 が実行されます.
リスナー
データが変化すると、リスナーにバインドされたメソッドを通知します.
リスナーの適用シーンデータの変化時に非同期またはオーバーヘッドが大きい(比較的時間がかかる)動作を実行する .
リスナーの使い方
フィルタ
文字列を頭文字大文字に書式設定したり、日付を指定書式に書式設定したりするなど、データの書式設定
カスタムフィルタ
例:イニシャル大文字
フィルタの使い方
ローカルフィルタ(適用範囲に制限があります)
パラメータ付きフィルタ構文(例:所定の日付フォーマット) を使用
ライフサイクル
主な段階マウント(関連属性の初期化) beforeCreate created beforeMount mounted 更新(要素またはコンポーネントの変更操作) beforUpdate update 破棄(関連属性の破棄) beforeDestory destoryed
ライフサイクル図
Vueインスタンスの生成プロセス beforeCreate:インスタンスの初期化後、データ観測およびイベント構成の前に呼び出されます. created:インスタンスの作成が完了するとすぐに呼び出されます. beforeMount:マウント開始前に呼び出されます. mounted:新しく作成されたvm.$elを置き換え、インスタンスにマウントした後、フックを呼び出します. beforUpdate:データ更新時に呼び出され、仮想DOMパッチが適用される前に発生します. update:データ変更による仮想DOMの再レンダリングとパッチ適用で、その後フックが呼び出されます. beforeDestory:インスタンスが破棄される前に呼び出されます. destoryed:インスタンスが破棄された後に呼び出されます.
フォームアクション
カスタムコマンド
Vue.directive('focus',{
inserted:function(el){
//el
el.focus();
}
})
<input type="text" v-focus>
パラメータ付きカスタムコマンド(例:要素の背景色を変更)
<div id="app">
<input type="text" v-color='msg'>
div>
<script src="js/vue.js">script>
<script>
//
Vue.directive('color',{
bind:function(el,binding){
//el:
//binding:
el.style.backgroundColor = binding.value.color;
}
});
var vm = new Vue({
el:"#app",
data:{
msg:{
color:"red"
}
}
});
script>
ローカルコマンド(適用範囲に制限があります)
var vm = new Vue({
el: "#app",
data: {
msg: {
color: "red"
}
},
//
directives: {
color: {
bind: function (el, binding) {
el.style.backgroundColor = binding.value.color;
}
},
focus: {
inserted: function (el) {
el.focus();
}
}
}
});
計算プロパティ
式の計算ロジックは複雑な場合があります.計算プロパティを使用すると、テンプレートの内容をより簡潔にすることができます.
<div id="app">
<div>{
{msg}}div>
<div>{
{msg.split('').reverse().join('')}}div>
<div>{
{reverseString}}div>
div>
<script src="js/vue.js">script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'hello'
},
//
computed:{
reverseString:function(){
return this.msg.split('').reverse().join('');
}
}
});
script>
計算プロパティとメソッドの違い
リスナー
データが変化すると、リスナーにバインドされたメソッドを通知します.
リスナーの適用シーン
リスナーの使い方
// 、
//
var vm = new Vue({
el: '#app',
data: {
firstName:'Jim',
lastName: 'Green',
fullName: 'Jim Green'
},
//
watch:{
firstName:function(val){
this.fullName = val + ' '+ this.lastName;
},
lastName:function(val){
this.fullName = this.firstName + ' '+ val;
}
}
});
フィルタ
文字列を頭文字大文字に書式設定したり、日付を指定書式に書式設定したりするなど、データの書式設定
カスタムフィルタ
例:イニシャル大文字
Vue.filter('upper',function(val){
// upper:
// val:
return val.charAt(0).toUpperCase()+val.slice(1);
});
フィルタの使い方
<div>{
{msg|upper}}div>
<div>{
{msg|upper|lower}}div>
<div v-bind:id='msg|upper'>div>
ローカルフィルタ(適用範囲に制限があります)
var vm = new Vue({
el: "#app",
data: {
msg: {
color: "red"
}
},
//
filters:{
upper:function(val){
return val.charAt(0).toUpperCase()+val.slice(1);
}
}
});
パラメータ付きフィルタ
// {
{date|format('yyyy-MM-dd')}}
Vue.filter('format', function (value, arg) {
//value
if(arg=='yyyy-MM-dd'){
var res = '';
res += value.getFullYear()+'-'+(value.getMonth()+1)+'-'+value.getDate();
return res;
}
});
<div>{
{date|format('yyyy-MM-dd')}}div>
ライフサイクル
主な段階
ライフサイクル図
Vueインスタンスの生成プロセス