0
<tab page="book"> </tab> 
    <tab page="dial"> </tab> 
    <tab page="groupe"> </tab> 
    <tab page="log"> </tab> 
    <tab page="star"> </tab> 

Как вы можете видеть, у меня есть директива под названием вкладки и это вкладки имеют атрибут страницу,Угловой директива значение сферы

мне нужно изменить templateUrl на основе значение страницы атрибут

если страница значение page="abc" то templateUrl должен быть templateUrl: 'tab/abc.html',

здесь моя директива код

contactBook.directive('tab', function() { 
    let m = 'tab/default.html'; 
    return { 
     restrict: 'E', 
     scope: { 
      page: '@', 
     }, 
     templateUrl: m, 
     link: function(scope, element, attributes) { 
      m = "tab/" + scope.page + ".html";  
     }, 
    }; 
}); 

это логически возможно ..? или любой альтернативный метод, чтобы сделать это ..?

+0

Попробовать странице: «=» вместо страницы: «@», что позволит вам сразу использовать значение атрибута внутри ссылки. –

ответ

7
templateUrl: function(elem,attrs) { 
    return "tab/" + attrs.page + ".html" || 'tab/default.html'; 
}, 
+0

Спасибо, что решила мою проблему, но я понятия не имею, откуда пришел атрибут varibale, attrs, – Sajan

+0

Элемент, где была вызывается директива, а атрибут - это объект, связанный с этим элементом. Для справки вы также можете проверить https://docs.angularjs.org/guide/directive –

2
contactBook.directive('tab', function() { 
    let m = 'tab/default.html'; 
    return { 
     restrict: 'E', 
     scope: { 
      page: '@', 
     }, 
     templateUrl: m, 
     link: function(element, attributes) { 
      m = "tab/" + attributes.page + ".html"; // attributes.page can access attribute value 
     }, 
    }; 
}); 

Вы изолируют область для вкладок директивы и вы привязки

scope: { 
      page: '@', 
    } 

если ваш проезжают только в string на родительской области директиве затем использовать

<tab page={{book}}> </tab> 

но если вы хотите передать объект из родительской области в директиву, то

<tab page="book"> </tab> 

то в вашей директиве

scope: { 
       page: '=', 
     } 
Смежные вопросы