Intellij idea 将外部参数传递给活动模板

Intellij idea 将外部参数传递给活动模板,intellij-idea,webstorm,live-templates,Intellij Idea,Webstorm,Live Templates,我想我已经找到了一个介于文件模板和活动模板之间的用例。我希望使用live模板来实现它们提供的额外功能,但仍然能够访问文件创建时指定的参数,就像在文件模板中一样。更具体地说,假设我有以下扩展名为“controller.js”的文件模板: 现在,如果我用这个模板创建一个新文件,它将要求输入一个文件和模块名。我分别输入“test”和“myModule”,这将创建一个“test.controller.js”文件,其内容如下: angular.module('myModule').controller('

我想我已经找到了一个介于文件模板和活动模板之间的用例。我希望使用live模板来实现它们提供的额外功能,但仍然能够访问文件创建时指定的参数,就像在文件模板中一样。更具体地说,假设我有以下扩展名为“controller.js”的文件模板:

现在,如果我用这个模板创建一个新文件,它将要求输入一个文件和模块名。我分别输入“test”和“myModule”,这将创建一个“test.controller.js”文件,其内容如下:

angular.module('myModule').controller('testCtrl', function () {
});
到目前为止还不错,但是如果我希望控制器名称是名称的大写版本,该怎么办?或者让可注入项成为用户可以立即指定的参数,并立即在控制器定义内移动光标?一个活动模板可以很好地完成所有这些工作(假设相应地设置了变量):

…除了现在,没有办法访问${NAME}参数。内置的fileNameWithoutExtension()函数几乎可以工作,但在本例中返回“test.controller”


有什么方法可以解决这个问题吗?

对我来说,fileNameWithoutExtension()函数返回的正是它希望返回的内容—没有扩展名的文件名。什么是“test.controller”?相关票证:@lena:文件模板有点诡计,它的扩展名设置为“controller.js”。其要点是指示文件名中项目的类型。现在,如果在创建新文件时在弹出窗口中键入“test”,则生成的文件名为“test.controller.js”。这就是为什么fileNameWithoutExtension()在本例中返回“test.controller”:它只删除最后一段。它可以用任何一种方式来解释事情,所以我认为这种行为是好的,但这可能是一种变通方法。
angular.module('myModule').controller('testCtrl', function () {
});
angular.module('$moduleName$').controller('$controllerName$Ctrl', function($injectables$) {
  $END$
});