art-templateフィルタ
2624 ワード
art-templateフィルタのパラメータおよび実行順序に関するテスト
以上から分かるように、書き込み可能なパラメータの位置は2つあり、複数ある場合は配列やオブジェクトの形式で書かなければならない.特殊な点、第1の位置のパラメータ、オブジェクトの打点を使って値を取る方式を取ることができて、しかし第2の位置のパラメータはこのように書いてあるいは誤りを報告します
以上から分かるように、運転順序は左から右に運転する、test 2の最初のパラメータはtest 1の戻り値であり、test 1に戻り値がない場合、test 2は後の位置にパラメータを追加し、パラメータを出力ときに最初のパラメータは
4つ目から分かるように、1つ目の関数の1つ目のパラメータに位置を指定する場合、2つ目の位置のパラメータを与えると、エラーが報告され、エラーの原因は
//node
template.defaults.imports.$test1 = function(){
console.log(arguments)
return 1
}
//art
//
{{ '123' | $test1 }}
// : 1
// : {"0":"123"}
//
{{ $test1 '123' }}
// : 1
// : {"0":"123"}
//
{{ '321' |$test1 '123' }}
// : 1
// : {"0":"321","1":"123"}
//
1.{{ '111' '22' | $test1 '222' }}
2.{{ '111' | $test1 '222' '333'}}
3.{{ obj | $test1 obj.key}} //obj
...
//
1.{{ ['111','22'] | $test1 '222' }}
// : {"0":["111","22"],"1":"222"}
2.{{ '111' | $test1 ['222','333']}}
// : {"0":"111","1": ['222','333']}
3.{{ obj.key | $test1 obj }} //obj
// : {"0":obj.key,"1":obj}
...
以上から分かるように、書き込み可能なパラメータの位置は2つあり、複数ある場合は配列やオブジェクトの形式で書かなければならない.特殊な点、第1の位置のパラメータ、オブジェクトの打点を使って値を取る方式を取ることができて、しかし第2の位置のパラメータはこのように書いてあるいは誤りを報告します
//node
template.defaults.imports.$test1 = function(){
console.log(1);
console.log(arguments)
return 1
}
template.defaults.imports.$test2 = function(){
console.log(2);
console.log(arguments);
return 2
}
//art
//
{{ '123' | $test1 | $test2 }}
// 2
//
// 1 {"0":'123' }
// 2 {"0": 1 }
//
{{ '123' | $test1 'test1'| $test2 'test2' }}
// 2
//
//1 {"0":"123","1":"test1"}
//1 {"0":1,"1":"test2"}
// $test1 return 1
{{ '123' | $test1 'test1'| $test2 'test2' }}
// 2
//
//1 {"0":"123","1":"test1"}
//1 {"0":undefined,"1":"test2"}
以上から分かるように、運転順序は左から右に運転する、test 2の最初のパラメータはtest 1の戻り値であり、test 1に戻り値がない場合、test 2は後の位置にパラメータを追加し、パラメータを出力ときに最初のパラメータは
undefined
、すなわち、後のパラメータが指定する、前のパラメータはundefined
である.伝達関数の場合、パラメータの値は[undefined,arg2]
です.//
{{ $test1 'test1' | $test2 'test2'}}
//
//
{{ $test1 | $test2 'test2'}}
//
//{'0':[Function],'1':'test2'}
4つ目から分かるように、1つ目の関数の1つ目のパラメータに位置を指定する場合、2つ目の位置のパラメータを与えると、エラーが報告され、エラーの原因は
missing }after argument list
、すなわちシステムは$test1
と'test1'
を2つのパラメータとして処理する.第5のケースでは,第4の処理と同様に$test1
をパラメータとして$test2
に伝えた.