我正在玩AngularJS。我正在使用控制器和templateUrl自动完成任务:)
目前,布局只有<div ng-view></div>
指令,所有内容都加载到该指令中。
我想打开模态(Bootstrap或jQuery UI,无关紧要)并加载那里(在模态体内)指定的控制器链接。
就像我的主ng-view
中的每个链接“打开”(加载模板并执行所有DOM编译和链接)一样,我想要在模式中打开一些链接。
我已经查看了AngularStrap和Angular-UI Bootstrap提供的内容,而且它们都没有我想要的内容。
AngularStrap可以获取新的部分模板,但不会执行新的控制器。
是否有任何解决方案/片段在Modal / Dialog中执行第二个控制器?
答案 0 :(得分:12)
Here's a plnkr演示使用angular + ui-bootstrap启动带有自己的模板和控制器的对话框。
听起来你对控制器和DOM之间的关系有点困惑。控制器不在DOM内部,事实上,我们正试图保持两个不同的东西。相反,DOM与$ scope关联,该范围由......(你猜对了......)控制器控制。
因此,在示例中,当对话框元素添加到DOM时加载控制器,但是,控制器不是以任何有意义的方式“在对话框中打开”。通过在演示的第17行上用"DialogCtl"
替换"DemoCtl"
,该对话框可以轻松使用主应用程序使用的相同控制器。我想说的是控制器和对话框是独立的。对话框不执行控制器,而是消耗$scope
一个。{/ p>
更新:我刚发现这个例子有点儿错误,如果您关闭对话框然后尝试重新打开它,则显示模态但不显示对话框。我现在正试图解决这个问题,我不确定发生了什么......
更新2:我认为无法重新加载对话框与模板缓存有关。在this plnkr中,您看到我在查询字符串中添加了“缓存破坏者”,并且对话框重新加载,但模态背景却没有。 example on the ui-bootstrap页面可以加载&amp;重新加载没有问题,但他们使用的是硬编码模板(而不是模板网址)。我也无法在plnkr中工作。哦,在前沿工作的乐趣: - /
更新3:我无法弄清楚发生了什么,但发布了这个问题寻求帮助Opening the same dialog multiple times with $dialog
答案 1 :(得分:0)
它接缝,$dialog
指令在当前版本的ui-bootstrap
中不存在。 http://angular-ui.github.io/bootstrap(0.11)
替代指令可以是modal
:
http://angular-ui.github.io/bootstrap/#/modal
这是一个可以看到的Plunker,它是如何工作的。 http://plnkr.co/edit/?p=preview
答案 2 :(得分:0)
$mdDialog.show({
locals: {alert:"message"},
controller: DialogController,
templateUrl: 'apps/sidebar/views/dialog1.tmpl.html',
parent: angular.element(document.body),
clickOutsideToClose:true
})