Айнымалы айнымалы ұзындық тізімімен қыстырғышты жасай аламын ба?

Javascript Angular дегеніміз мына сияқты көрінетін контроллерлерді жасаудың өзіндік үлгісі бар:

myApp.controller('myController', ['$scope', 'foo', 'bar', 
                 function($scope, foo, bar) {
                     //do stuff...
                 }]);

'$ scope', 'foo', 'bar' параметрі төртбұрышты жақшасыз массив ішіндегі функцияның параметрлері ретінде қайталанады.

Мен жаснппетті жаза отырып, бұл қателікті азайта аламын деп ойладым. Мынадай көрінеді:

# -*- mode: snippet -*-
# name: angctl
# key: angctl
# --
$1.controller('$2', ['$3', function($3) {
$0;
}]);

Бұл жақсы жұмыс істейді, бірақ тек егер $ scope пайдаланатын болсам, бір параметр бар болса ($ 3 позицияда). Егер біреуден артық пайдаланғым келсе, ол бұзылады.

Үзінділердің үтірмен бөлінген тізімін жасап, үзінділердің үтірмен бөлінбеген тізімін қайталауды қайталау үшін, үзіндісін жазудың кейбір жолы бар ма?

1

1 жауаптар

Менің ойымша, мұндай нәрсе жұмыс істей алады:

# -*- mode: snippet -*-
# name: angctl
# key: angctl
# --
$1.controller('$2', [${3:$(mapconcat (lambda (x) (format "'%s'" x))
                                     (split-string yas-text "," t "[ \t]") ", ")}, function($3) {
$0;
}])

Және қолданыста:

enter image description here

2
қосылды