角动态组件生成

时间:2015-01-19 21:16:01

标签: javascript angularjs

我希望通过使用模态作为示例来回答并解决这个问题。所以对于初学者来说,请不要用"使用bootstrap的模态服务"来回答这个问题。

基本上,我想知道" Angular方式"当需要html凭空出现并将组件或指令应用于它时,就是这种情况。数据请求错误模式就是一个很好的例子:例如,如果组件尝试加载某种数据,并且数据返回时出现某种错误,我希望数据服务能够以编程方式触发模态。 / p>

这引出了一个问题:模板在哪里,在这种情况下?除非我弄错了,否则不会为页面上的标记编译指令,从架构的角度来看是可取的(例如,我不希望页面上有代码不太可能被使用,例如在非常常见的错误模式的情况下。服务必须附加到控制器上,除非我在页面上有标记,否则不会添加相同的情况。

当页面加载时,用于激活基本上(在我看来,理想情况下如此)不存在的组件的模式是什么?理想情况下,我希望完全忽略模态组件,直到用户体验需要它为止。到目前为止,ng-if语句通过在页面的某个位置包含一个div,似乎是最好的方法。但即便如此,这在技术上也很麻烦,因为你正在为只支持潜力的网页添加标记。情况下。

能够从某些服务或控制器或指令广播" triggerErrorModal"事件,传递一些参数,让应用程序启动模态组件。请注意,还有其他情况可以使用,所以请将此视为更一般的问题。

思想?

1 个答案:

答案 0 :(得分:0)

我知道你已经说过你不想被发送到bootstrap的模态服务..但是..查看源代码提供了很多关于如何做到这一点的信息。 / p>

基本上你可以使用以下方法添加HTML元素:

var el = angular.element('<div class="new-thing"><my-directive></my-directive></div>')

将其添加到页面:

var body = $document.find('body').eq(0);
body.append(el)

然后按以下方式编译:

var compiled = $compile(el)($scope);
相关问题