以下內(nèi)容是關(guān)于 art-template 過(guò)濾器里的參數(shù)以及執(zhí)行順序的測(cè)試
//node 一個(gè)測(cè)試函數(shù)
template.defaults.imports.$test1 = function(){
console.log(arguments)
return 1
}
//art
//第一種情況
{{ '123' | $test1 }}
// 編譯結(jié)果 : 1
// 終端輸出: {"0":"123"}
//第二種情況
{{ $test1 '123' }}
// 編譯結(jié)果 : 1
// 終端輸出: {"0":"123"}
//第三種情況
{{ '321' |$test1 '123' }}
// 編譯結(jié)果 : 1
// 終端輸出: {"0":"321","1":"123"}
//報(bào)錯(cuò)
1.{{ '111' '22' | $test1 '222' }}
2.{{ '111' | $test1 '222' '333'}}
3.{{ obj | $test1 obj.key}} //obj為一個(gè)對(duì)象
...
//不報(bào)錯(cuò)
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為一個(gè)對(duì)象
// 終端輸出: {"0":obj.key,"1":obj}
...
從上面可以看出,可以寫(xiě)參數(shù)的位置有兩個(gè),并且如果有多個(gè),那必須寫(xiě)成數(shù)組或?qū)ο蟮男问?
特殊點(diǎn),第一個(gè)位置的參數(shù),可以使用對(duì)象打點(diǎn)取值的方式,但是第二個(gè)位置的參數(shù)這樣寫(xiě)或報(bào)錯(cuò)
//node 兩個(gè)測(cè)試函數(shù)
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"}
從上可以看出,運(yùn)行順序?yàn)閺淖笸疫\(yùn)行,且test2的第一個(gè)參數(shù),為test1的返回值,當(dāng)test1沒(méi)有返回值,但是test2在后面的位置添加了一個(gè)參數(shù),在輸出參數(shù)的時(shí)候第一個(gè)參數(shù)為undefined
,也就是說(shuō),當(dāng)指定了后面的參數(shù),且前面的參數(shù)為undefined
的時(shí)候.在傳進(jìn)函數(shù)時(shí),參數(shù)的值為[undefined,arg2]
//第四種情況
{{ $test1 'test1' | $test2 'test2'}}
//報(bào)錯(cuò)
//第五種情況
{{ $test1 | $test2 'test2'}}
//終端輸出
//{'0':[Function],'1':'test2'}
從第四種可以看出,在沒(méi)有給第一個(gè)函數(shù)的第一個(gè)參數(shù)指定位置時(shí),給了第二個(gè)位置的參數(shù),會(huì)報(bào)錯(cuò),報(bào)錯(cuò)原因?yàn)?code>missing }after argument list ,也就是說(shuō)系統(tǒng)把$test1
和'test1'
當(dāng)成了兩個(gè)參數(shù)來(lái)處理.
在第五種情況中,同第四種的處理,把$test1
當(dāng)成了參數(shù),傳到了$test2
中