2017-01-04 5 views
0

Для такой директивы, как показано ниже, существует ли способ переопределить свойство templateUrl, чтобы вместо myTemplate1.tpl.html myTemplate2.tpl.html можно было использовать? Это связано с тем, что директива уже использовалась в других местах, но для нового требования текущий шаблон не может быть использован.angularjs 1.5 override templateUrl

angular.module("myDirective", []) 
    .directive("myDirective", [function() { 
    "use strict"; 

    return { 
     restrict: "E", 
     replace: true, 
     scope: { 
      "property1": "=", 
      "property2": "=" 
     }, 
     templateUrl: "web-url/myTemplate1.tpl.html" 
    }; 
}]); 
+0

Можете ли вы изменить код директивы? – devqon

+0

Что передать шаблон URL как переменную, возможно, извне? что-то вроде: scope: { "property1": "=", "templateuri": "=", }, а затем: templateUrl: templateUri –

ответ

1

Если вы можете редактировать код ДИРЕКТИВА себя, вы можете сделать что-то вроде этого:

angular.module("myDirective", []) 
    .directive("myDirective", [function() { 
    "use strict"; 

    return { 
     restrict: "E", 
     replace: true, 
     scope: { 
      "property1": "=", 
      "property2": "=" 
     }, 
     templateUrl: function(element, attrs) { 
      // default to 'old' template 
      // only use other template if passed through the 'template-url' attribute 
      return attrs.templateUrl || "web-url/myTemplate1.tpl.html"; 
     } 
    }; 
}]); 

Таким образом, все ваши старые директивы обыкновений будет по-прежнему работать, и вы можете настроить его так:

<!-- Still uses web-url/myTemplate1.tpl.html --> 
<my-directive></my-directive> 

<!-- Uses some/other/template/url.html --> 
<my-directive template-url="some/other/template/url.html"></my-directive> 
0

Возможно попробовать, как показано ниже:

angular.module("myDirective", []) 
    .directive("myDirective", [function() { 
    "use strict"; 

    return { 
     restrict: "E", 
     replace: true, 
     scope: { 
      "property1": "=", 
      "property2": "=" 
     }, 
     templateUrl: function(elem, attr) { 
      return 'web-url/myTemplate'+ attr.urlnum+'.tpl.html'; 
     } 
    }; 
}]); 

 Смежные вопросы

  • Нет связанных вопросов^_^