我建立一个新的方法工作亚当例子,使用也从他们谈论templateUrl财产https://docs.angularjs.org/guide/directive功能角文档样本,这是从角文档的plunker:http://plnkr.co/edit/h2CSf2WqCLYfPvzL9WQn?p=preview
.directive('myCustomer', function() {
return {
templateUrl: function(elem, attr){
return 'customer-'+attr.type+'.html';
}
};
});
而且这是我的混音解决方案:
http://codepen.io/anon/pen/wawOyz?editors=101
app.factory('templates', function() {
return {
compact: 'compact',
detailed: 'detailed'
};
});
app.directive('contact', function(templates) {
return {
restrict: 'E',
templateUrl: function($elem, $attr){
return templates[$attr.mode];
},
scope: {
contact: '=ngModel'
}
};
});
我喜欢ŧ他认为在一家工厂有所有的模板地址,但我发现每个模式的指令都是相当重复的,如果你有几个使用这种方法的元素,你需要命名空间(contact-text,email-text,company-text)他们不会崩溃。
我不确定如果这是更好的方式去,更短,更干,但也许是更难测试或更少的定制。我只是想分享这个方法,以防它可以帮助任何人。
您是否需要在指令中粘贴一个模板?你能简单地使用一个指令作为你的模板的ng-include旁边的属性吗? –
你是否在谈论[亚当在这里建议的解决方案](http://codepen.io/anon/pen/tabcx)? – SpeedShifter