我使用了ngDialog并且有一个带嵌套视图的模态。洞察我的模态我在注册(状态)和登录(登录)之间切换所以我需要包含用于注册的控制器和用于登录的控制器。我一直在寻找解决方案几个小时,但找不到任何东西。有人怎么能这样做?如果有人知道解决方案不是针对ngDialog而是针对$ modal,请告诉我。谢谢!
$scope.clickToOpen = function () {
ngDialog.open({
template: 'js/modal/modal.html',
controller: 'SignupCtrl',
});
};
在上面的代码中 - 一切都可以找到注册,因为我包含了它的控制器,但不包括登录,因为我不知道如何包含登录控制器。 此外,如果它很重要,我会包含更多代码 - 只是认为这对我的问题无关紧要。
我也尝试过这个:
app.config(function ($stateProvider) {
$stateProvider.state('activity.modal', {
url: 'modal',
templateUrl: 'js/modal/modal.html',
views: {
'loginView@': {
templateUrl: 'js/login/login.html',
controller:'LoginCtrl'
},
'signupView@': {
templateUrl: 'js/signup/signup.html',
controller:'SignupCtrl'
}
}
});
});
但这既不适用于登录也不适用于注册。
答案 0 :(得分:2)
这个问题有多种解决方案。其中一些比其他更好,但最终,它取决于您正在寻找什么样的UI / UX。
合并控制器的一个对话框(可以说是最糟糕的方法)
您只能使用一个对话框和一个模板,但您必须将控制器合并在一起,以便新控制器可以同时处理登录和注册逻辑。
两个不同的对话
您可以打开不同的ngDialog
弹出窗口 - 一个用于登录另一个弹出窗口以进行注册。这些将由您视图中的不同按钮触发。
例如,有两个按钮(登录和注册),其中“登录”按钮将显示“登录”对话框,“注册”按钮将显示“注册”对话框。
在对话框中使用组件(可以说是最好的方法)
您可以打开一个ngDialog
实例,在模板中,您可以使用两个不同的组件 - 一个用于登录,另一个用于注册。每个组件都有自己独立的模板和控制器,因此关注点分离规则仍然适用。
最后一种方法的额外好处是,您可以在网站的任何位置使用这些组件 - 而不仅仅是ngDialog
模板。