1

我有一个用于以角度创建指令的实时模板,为了使其更易于使用,我想做的一件事是将指令的控制器声明中的依赖数组复制到控制器函数的参数中。问题是依赖数组要求参数是字符串,所以看起来['$scope', '$location', 'etcService', controllerName]参数是数组中控制器名称之前的所有内容。我要注入这些参数的控制器功能是function controllerName($scope, $location, etcService){}

为此,您可以看到我需要删除每个数组元素周围的引号。这可以在实时模板中执行吗?

这是我当前的模板:

(function () {
    'use strict';

    var app = angular.module('$moduleName$');

    app.controller('$controllerName$', [$PARAMS$, $controllerName$]);

    app.directive('$directiveName$', function () {

        return {
            templateUrl: 'app/$templateUrl$',
            transclude: $transclude$,
            restrict: '$restrict$',
            scope: $scope$,
            controller: $controllerName$
        }
    });

    function $controllerName$($PARAMS_noQuotes$){
    $END$
    }
})();
4

2 回答 2

0

不幸的是,使用实时模板是不可能的,因为它没有“替换”功能,可以让替换字符(在你的情况下:'什么都不做)来做你想要的转换。


我没有找到任何需要此类功能的专用票;这里只有部分相关的评论或其他部分相关的票证

提交单独的票证(功能请求)绝对是有意义的——更快实现特定功能(并且不会丢失)的机会要大得多:https ://youtrack.jetbrains.com/issues/WEB

于 2015-07-30T20:17:55.240 回答
0

使用预定义的函数 groovyScript 可以实现这样的功能。它仅简要记录:https ://www.jetbrains.com/idea/help/live-templates-2.html但它是更复杂的实时模板操作的替代方案。

让我们定义名为“ctrl”的简化实时模板:

app.controller('$controllerName$', [$PARAMS$, $controllerName$]);

function $controllerName$($PARAMS_noQuotes$){
    $END$
}

实时模板的变量可能如下所示(注意 PATH_TO_GROOVY_SCRIPT 必须手动交换为 groovy 脚本的完整路径!):

编辑模板变量对话框

实时模板脚本可以存储为划痕:

划痕

在这种情况下,“PATH_TO_GROOVY_SCRIPT”将是:

"<YOUR_INTELLIJ_HOME>\\config\\scratches\\Live Templates\\ctrl\\PARAMS_noQuotes.groovy"

实际脚本可以非常简单,例如:

"$_1".replaceAll("'","")

在我看来,即使在这样一个简单的情况下,在变量对话框中使用单独的脚本文件而不是内联脚本表达式也是一个好习惯。单独的脚本具有这个优势,它们可以在 Groovy 控制台中轻松测试......

准备好的模板可以这样使用:

正在使用的实时模板

于 2015-08-20T22:28:00.187 回答