【发布时间】:2016-12-03 11:39:24
【问题描述】:
我有许多 Angular 1.5 组件,它们都采用相同的属性和数据结构。我认为它们可以重新分解为单个组件,但我需要一种方法来根据 type 属性的插值动态选择模板。
var myComponentDef = {
bindings: {
type: '<'
},
templateUrl: // This should be dynamic based on interpolated type value
};
angular.module('myModule').component('myComponent', myComponentDef);
我不能使用templateUrl function($element, $attrs) {},因为$attrs 中的值是未插值的,所以我不会得到传入数据中指定的类型。
我可以只拥有一个带有一系列 ng-if 或 ng-switch 指令的大模板,但我希望将模板分开。
或者,我可以将组件分开并在父组件中使用ng-switch 等,但我不喜欢这样,因为它看起来有很多重复。
我正在寻找一种解决方案,我可以使用传入绑定的插值 type 来匹配每种类型的模板 url,然后使用该模板构建组件。
这可能吗?
谢谢
【问题讨论】:
-
我认为这是不可能的,因为它需要
$compile服务,而该服务不适用于组件。不过你可以使用指令。 -
查看这个简单而优雅的解决方案:stackoverflow.com/a/41743424/1274852
标签: angularjs angular-components