1

在 angular-dart 中,可以创建自己的组件,如下所示。如果您在 html 中使用自定义标签,如下所示:

<rating></rating>

angular 将通过调用与评级关联的类的构造函数来创建一个组件,在本例中为 new RatingComponent() (如果我没记错的话)。

我知道您可以添加属性以对其进行一些控制,但我想知道是否可以提供您自己的实例,而不是 Angular 调用构造函数。如果我在主控制器中有一个按钮列表,如何实现这样的功能:

<div ng-repeat='b in ctrl.buttonList'>
    <fancy-button instance='b'></fancy-button>
</div>

我感觉我遗漏了一些明显的东西,但我确实四处搜索并找不到答案。

编辑(额外澄清):我认为它归结为你是否可以通过角度影响/绕过构造函数的调用。如果它只是关于生成 html,它很容易不使用该组件而只使用主控制器(如下所示)生成 html,但如果可能的话,我想使用一个组件,因为它也有用于沙箱的 shadow-dom的CSS。

<div ng-repeat='b in ctrl.buttonList'>
    <input type='button' class='fancy' value='{{b.label}}'></input>
</div>
4

1 回答 1

0

你想要类似的东西

<div ng-bind-html='ctrl.html'></div>

这样您就可以通过控制器提供 html。

但是,您必须创建自己的 NgBindHtmlDirective 实现(只需几行),因为使用的 ng-bind-html 的 NodeValidator 还不允许自定义标签。

也许有更复杂的方法,但我还不太了解 Angular。

=== 编辑 ===

我认为您尝试做的不是Angularish。您可以对提供精美按钮或输入属性值的模型进行 ng-repeat。在组件类中,您可以访问这些属性,并且可以根据这些属性进行行为和外观。

如果您在开发时不知道要使用哪种标签,则可以使用 ng-bind-html 使用代码创建标记。

于 2013-12-09T16:23:53.140 回答