- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
那是我的示例项目 (8,3 MB) Visual Studio 2012 解决方案:
我的问题:
模块 step2 及其 compositionComplete 事件未被调用!模块 step1 是并且相同的事件工作正常!
这样你就可以重现问题:
1.) 启动应用
2.) 点击“浏览学年”按钮
3.) 单击“创建”按钮(打开 SchoolyearWizard)
4.) 向导步骤 1 可见,调用其 compositionComplete 事件
5.) 点击“下一步”按钮
6.) 向导步骤 2 是可见的,它的 compositionComplete 事件未被调用
我只在这里发布重要的内容,这些是 5 个模块。
SchoolyearDialog
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('activateStep1').then(function (obj) {
self.activeScreen(obj.moduleId);
});
app.on('activateStep2').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());
};
return SchoolyearDialog;
});
学年浏览器
define(['durandal/app', 'plugins/dialog', 'knockout', 'services/dataservice', 'plugins/router', 'moment'],
function (app, dialog, ko, dataservice, router, moment) {
var SchoolyearBrowser = function () {
var self = this;
self.create = function () {
app.trigger('activateStep1', {
moduleId: 'viewmodels/SchoolyearWizard',
viewMode: 'create'
});
}
self.open = function () {
// do not open the wizard
}
self.compositionComplete = function (view) {
debugger;
}
};
return SchoolyearBrowser;
});
SchoolyearWizard
define(['durandal/activator', 'viewmodels/step1', 'viewmodels/step2', 'knockout', 'plugins/dialog','durandal/app'], function (activator, Step1, Step2, ko, dialog, app) {
var steps = [new Step1(), new Step2()];
var step = ko.observable(0); // Start with first step
var activeStep = activator.create();
var stepsLength = steps.length;
var hasPrevious = ko.computed(function () {
return step() > 0;
});
var caption = ko.computed(function () {
if (step() === stepsLength - 1) {
return 'save';
}
else if (step() < stepsLength) {
return 'next';
}
});
activeStep(steps[step()]);
var hasNext = ko.computed(function () {
if ((step() === stepsLength - 1) && activeStep().isValid()) {
// save
return true;
} else if ((step() < stepsLength - 1) && activeStep().isValid()) {
return true;
}
});
return {
showCodeUrl: true,
steps: steps,
step: step,
activeStep: activeStep,
next: next,
caption: caption,
previous: previous,
hasPrevious: hasPrevious,
hasNext: hasNext
};
function isLastStep() {
return step() === stepsLength - 1;
}
function next() {
if (isLastStep()) {
// Corrects the button caption when the user re-visits the wizard
step(step() - 1);
// Resets the wizard init page to the first step when the user re-visits the wizard
activeStep(steps[0]);
debugger;
// save;
}
else if (step() < stepsLength) {
step(step() + 1);
activeStep(steps[step()]);
debugger;
//app.trigger('activateStep2', {
// moduleId: 'viewmodels/step2'
//});
}
}
function previous() {
if (step() > 0) {
step(step() - 1);
activeStep(steps[step()]);
}
}
});
第一步
define(function () {
return function () {
var self = this;
self.isValid = function () {
return true;
}
self.name = 'step1';
self.compositionComplete = function (view) {
debugger;
}
};
});
第二步
define(function () {
return function () {
this.isValid = function () {
return true;
}
this.name = 'step2';
self.compositionComplete = function (view) {
// I never get here WHY ???
}
};
});
最佳答案
在第 2 步中,您没有 self.compositionCompleted 事件,因为您没有上下文“self”
你需要声明self = this;
var self =this;
self.name = whatever;
self.compositionComplete
关于javascript - 为什么在 durandaljs 中不调用 compositionComplete 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751101/
如何在父路由更改时触发停用事件。例如在“HTML 示例”中,当主从页面处于事件状态时,将 View 更改为另一个。如何在此处强制对话“你想离开......”? 谢谢弗拉基米尔。 更新: 带有替换对话框
有人可以解释为什么当用户单击 Durandal 的链接(导航)时没有立即开始转换(至少是默认的入口)吗? 换句话说,我们是否需要两种机制(加载器动画 + 过渡)来指示正在执行的操作(例如,激活方法中的
我有什么 试图了解正在发生的事情以及如何控制它。对于尚未通过身份验证的用户,我有一个“公共(public)” View ,对于已通过身份验证的用户,我有一个“主页” View 。这是我的路线配置: a
我真的很想利用 Durandal 的 buildNavigationModel() 方法并将我的 UI 导航绑定(bind)到 router.navigationModel。 但就我而言,我基本上想要
我在从 Knockout 的模板绑定(bind)转换到 Durandal compose 绑定(bind)时遇到了一些困难。 在我的旧项目中,我有一个选项卡列表,可以通过将它们放入可观察到的“sele
我有一个使用 DurandalJS 的 SPA 应用程序,效果很好。链接被路由, View 模型被激活等。 问题是,我有一个指向实际存在于服务器上的页面的 anchor 。我需要浏览器实际查询此页面(
对于我来说,我无法让 durandaljs 与 Areas 一起工作。我正在开发一个包含多个迷你 SPA 的应用程序,但我不确定如何设置 durandaljs 来使用它。我无法在网上找到任何可以让我朝
我有一个应用程序,它使用 moment js 插件显示事件相对时间。时间会自动刷新,与当前时间进行比较并显示(如 Facebook 新闻源)。应用程序之前是用 angularjs 编写的,我使用以下代
对于我来说,我无法让 durandaljs 与 Areas 一起工作。我正在开发一个包含多个迷你 SPA 的应用程序,但我不确定如何设置 durandaljs 来使用它。我无法在网上找到任何可以让我朝
我有一个主视图和两个 subview (使用 DurandalJS 组合)。现在,主视图的 viewAttached 事件提前触发,而我的 subview 仍在处理 ajax 请求。理想情况下,主视图
我有一个在 View 上显示的联系人组列表。当我单击联系人组时,我想更改当前哈希并加载关联的联系人。 比如说,我有 3 个联系人组 All (no Id) Friends (Id := 1) Fami
我正在使用 durandaljs 2.0。我已经按照建议和解释安装了 durandal 入门套件 here 。在 shell 中,我返回 router.activate({ pushState: tr
在 viewmodel.js 文件中,我想在文本框上绑定(bind)日期选择器。 这是代码 define([ 'jquery', 'durandal/app', 'servic
我有 DurandalJS 单页应用程序,所有数据均从 API 请求中检索,所需 header 包括要设置的 X-Auth-Token。一切正常,除了当我调用自定义模式来显示 iframe 时, 下面
我已决定为我的 AJAX 请求、模型和数据数组创建一个名为“controllers”的单独文件夹,这样如果我需要在多个页面上执行相同的请求,我就不必重复我的代码。 例如,在“app/page1/ind
如果您加载 Durandal SPA 模板并尝试导航到伪造的 URL(通过向 URL 添加类似“assdf”的内容),该 url 将得到维护并且不会提供任何错误。如何改变这一点,以便无效的 URL 给
我正在尝试使用 durandaljs 制作具有动态内容的单页应用程序。例如,如果您更改设置中的语言,则 UI 会更新。我正在使用 SignalR 从服务器加载对象,除了导航时一切正常。第一次加载 Vi
那是我的示例项目 (8,3 MB) Visual Studio 2012 解决方案: sample project zipped 我的问题: 模块 step2 及其 compositionComple
我正在尝试使用 DurandalJS 使模式在应用程序中工作(SPA) 框架,无法正确显示模态。目前,当模态打开时,它会在没有遮挡的情况下显示并水平填充浏览器。 (“Feeds”、“New Feed”
除了维护当前版本的 DurandalJS 之外,DurandalJS 项目的所有者现在还在 Google 开发 AngularJS Next (v2?)。这两个框架正在融合。 http://blog.
我是一名优秀的程序员,十分优秀!