Angular指令的{Jade模板

时间:2015-08-08 18:21:16

标签: angularjs node.js pug

在我的 MEAN 应用中,我使用 jade 作为我的模板引擎。我的问题是,当我调用angular指令时,jade代码不起作用但html代码正常工作。我的代码如下:

index.jade

div(ng-repeat="num in addDir")
  admin-collection

directive.js

var formDir = angular.module("formDirective", []);

formDir.directive('adminCollection', function()  {
    return {
       restrict: 'E',
       transclude: true,    
       // call jade template url   
       templateUrl: '../_template/_formTemplate/_adminCollection.jade'
    };
});

_adminCollection.jade

h1 from _adminCollection templateUrl

如果我在 _adminCollection.jade 中使用玉格式代码,它只显示纯文本,而不是 h1 标记内的文字

但是以下代码正在运行:

directive.js

var formDir = angular.module("formDirective", []);

formDir.directive('adminCollection', function()  {
    return {
       restrict: 'E',
       transclude: true,    
       // call jade template url   
       templateUrl: '../_template/_formTemplate/_adminCollection.html'
    };
});

_adminCollection.html code ::

<h1> from _adminCollection templateUrl </h1>

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

Jade更少 - 它必须转换为另一种格式,因为浏览器无法理解。当你使用less时,你必须将它转换为css。如果你使用玉 - 到HTML。 如果您使用grunt,您应该查看它:https://github.com/gruntjs/grunt-contrib-jade 否则,您可以检查您的IDE是否可以将jade转换为html。例如,PhpStorm可以自动方式执行此操作。

然后在你的指令中你应该指定html模板的路径,没有jade。

您可以使用以下目录结构:

do_action( 'groups_custom_create_steps' );
编辑:这里有关于咕噜的非常好的文章:http://anthonydel.com/my-personal-gruntfile-for-front-end-experiments/还有更多你需要的东西,但也许它会帮助你

答案 1 :(得分:1)

....或者您可以使用webpack来完成工作。

然后您可以像这样加载模板:

angular.module('app').component('myComponent', {
  bindings: {},
  template: require('./mytemplate.jade')()
});

你可以注意到我正在调用返回的函数。

答案 2 :(得分:0)

另一种选择是将HTML模板保留在DOM中,但隐藏:

auto_now

然后使用jQuery从DOM中获取HTML,并将其赋予角度:

div(ng-non-bindable, style="display: none")

  #adminCollectionTemplate
    div(ng-repeat="num in addDir")
      admin-collection

  #anotherTemplate
    //- Alternatively, pull in the template from another file
    include ./_formTemplate/_adminCollection.jade

这只会工作,没有任何Ajax或任何任务运行者。但它会使用模板混淆DOM,否则这些模板会隐藏在JS中。将每个新模板放入该div中是一个额外的步骤。

formDir.directive('adminCollection', function() { return { restrict: 'E', transclude: true, // fetch template from DOM template: $('#adminCollectionTemplate').html() }; }); 需要告诉Angular单独保留模板元素(不要操纵它们或绑定它们),直到它们的克隆实际被指令使用。