【发布时间】:2013-09-18 02:11:03
【问题描述】:
https://github.com/dFiddle/dFiddle-2.0/blob/gh-pages/app/masterDetail/wizard/index.js
当我查看此向导时,我问自己如何将变量(例如处于向导的编辑或添加模式中的模式)传递给创建 step1、step2 和 step3 的 index.js。
我看不到我可以在哪里传递这些数据,因为 index.js 是保存所有步骤的主向导,它是由 durandal 动态创建的。
那么如何将数据传递给 index.js,以便我可以决定是运行 service.create() 还是 service.edit() 函数来获取不同的数据等...
更新
define(['durandal/app','plugins/dialog', 'knockout', 'services/dataservice', 'plugins/router', 'moment'], function (app, dialog, ko, dataservice, router, moment) {
var SchoolyearDialog = function () {
var self = this;
self.activeScreen = ko.observable('viewmodels/SchoolyearBrowser'); // set the schoolyear browser as default module
app.on('startWizard').then(function (obj) {
self.activeScreen(obj.moduleId);
});
app.on('dialog:close').then(function (options) {
dialog.close(self, options );
});
self.closeDialog = function () {
dialog.close(self, { isSuccess: false });
}
}
SchoolyearDialog.show = function () {
return dialog.show(new SchoolyearDialog());
};
SchoolyearDialog 模块控制显示哪个屏幕。 SchoolyearDialog 订阅了 startWizard 事件。按下 createWizard 按钮会触发 startWizard 事件。还有一个 editWizard 按钮可以触发另一个事件,例如 startWizardEdit。 activeScreen 设置为默认模块 ID:'viewmodels/SchoolyearBrowser' 或 模块 id: 'viewmodels/SchoolyearWizard' 加载向导
是否有可能以某种方式向 activeScreen 属性传递一个值 (viewMode) 并在保存步骤的向导模块中检索它?
【问题讨论】:
-
谁在控制初始向导模式?该示例可能并不理想,因为它 a) 返回一个单例,而您可能正在寻找一个构造函数,并且 b) 它是通过子路由器激活的,这限制了您可以传递给
activate函数的内容。 -
我已经用更多信息更新了我的初始化问题。谢谢雷纳 :)
-
非常好的用例,所以我继续创建了一个新示例。
-
“相当好的用例......”因为它的真实生活样本 ;-) 生活写出最好的故事嘿嘿。
标签: durandal