如何将模板传递给属性中的指令?

时间:2014-05-27 10:42:53

标签: angularjs angularjs-directive

我想将模板传递给这样的指令:

<my-directive template="/templates/my-directive-template.html"></my-directive>

如果未提供模板,则使用标准模板。 我怎样才能做到这一点?

或者我不应该这样做?我只是想重用一个指令,但每次都要给它不同的外观。

这是指令......但我仍然坚持如何前进。

app.directive('my-directive', function(){
  return {
    restrict: 'E',
    scope: {
      template: '=template'
    },
    template: 'standard-template.html'
  }
})

2 个答案:

答案 0 :(得分:2)

您可以使用ng-include。所以作为一个例子

app.directive('my-directive', function(){
  return {
    restrict: 'E',
    scope: {
      template: '=?'
    },
    template: '<div ng-include="directiveTemplate"></div>',
    link: function (scope) {
        scope.directiveTemplate = scope.template || '/path/to/default.tpl.html';
    }
  }
})

答案 1 :(得分:2)

templateUrl可以是一个函数,它将元素及其属性作为参数获取。所以你可以做到以下几点:

app.directive('my-directive', function(){
  return {
    restrict: 'E',
    templateUrl: function(element, attrs) {
                return attrs.template || 'standard-template.html';
              }