我已经建立了一种处理 Adam 示例的新方法,并且还使用了 angular 文档中的示例,他们在其中讨论了 templateUrl 属性https://docs.angularjs.org/guide/directive中的函数,这是来自 angular 文档的 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'
}
};
});
我喜欢在一个工厂中拥有所有模板地址的想法,但我发现每个模式的指令非常重复,如果您有多个使用这种方法的元素,您将需要命名它们(联系人文本、电子邮件文本、公司文本) 所以他们不会崩溃。
我还不确定这是否是一种更好的方法,是否更短更干燥,但可能更难测试或更少可定制。我只是想分享这种方法,以防它可以帮助任何人。