【发布时间】:2015-10-20 10:49:27
【问题描述】:
我有一个用于在 Angular 中创建指令的实时模板,为了使其更易于使用,我想做的一件事是将指令的控制器声明中的依赖数组复制到控制器函数的参数中.问题是依赖数组要求参数是字符串,因此可能看起来像['$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$
}
})();
【问题讨论】:
-
不幸的是,使用实时模板是不可能的,因为它没有“替换”功能,可以将
'替换为任何内容(进行所需的转换)。 -
我没有找到任何需要此类功能的专用票;仅部分相关的 cmets here 或 another partially related ticket。提交单独的票绝对是有意义的——更快地实现特定功能的机会更大(不会丢失):youtrack.jetbrains.com/issues/WEB
-
非常感谢@LazyOne。不幸的是,这是不可能的,它似乎应该是一个标准功能。
-
“标准”在这种情况下非常值得怀疑。例如,我没有任何需要在那里拥有它。根据我设法找到的票证,只有少数人提到“最好拥有”,甚至没有提供他们的用例。但是是的——没有人会反对在那里提供这样的功能。
-
我不是 Angular 用户 .. 所以不太了解这些函数的使用位置等。所以我的问题是 - 你可以在单个文件中拥有多个像这样的代码块 .. 或每个文件更有可能有一个块?如果单块..那么也许您应该尝试使用文件模板?这并不理想(Velocity 模板引擎).. 但至少你可以在那里使用基本的 Java 字符串操作函数......