我正在寻找一种实现模态的方法,它包含一个跨越多个页面的对话框。每个页面都应该有自己的控制器,并且应该对数据进行自己的服务器调用。一个示例是允许您选择某一天的模式:在第一页上,您将选择一年,在第二天和第三天,选择缩小每个页面的选择范围。但是每个页面的网址都应保持不变。
我的第一个想法是构建类似UI-Router的东西,它允许你定义模态可以存在的状态,每个状态都有自己的控制器并解析函数:
ModalService.register({
name: "daySelector",
states: {
years: {
templateUrl: "day-selector-years.tpl.html",
controller: "DaySelectorYearsController",
params: [],
resolve: {
years: function () {
return DataService.getYears();
}
}
},
months: {
templateUrl: "day-selector-months.tpl.html",
controller: "DaySelectorMonthsController",
params: ["year"],
resolve: {
months: function (year) {
return DataService.getMonthOfYear(year);
}
}
},
days: {
templateUrl: "day-selector-days.tpl.html",
controller: "DaySelectorDaysController",
params: ["year", "month"],
resolve: {
days: function (year, month) {
return DataService.getDaysOfMonth(year, month);
}
}
}
}
});
据我所知,这需要我自己完成所有的编译和依赖注入。我还必须以某种方式将模态链接到某个模块和某个范围,以确保可以解决所有依赖关系。现在,我仍然非常不熟悉AngularJS的所有这些相当低级别的操作。所以在我深入讨论所有这些之前,我想检查一下这是否真的可行,或者是否有更好的方法来解决这个问题。