- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置 Durandal 应用程序,我从只有两个 View 的非常简单的配置开始。
发生的事情是,当我调用 router.navigateTo('#/welcome') 或 router.navigateTo('#/primaryapplicants') 时, View 没有改变。但是,地址栏中的 URL 会发生变化,如果我重新加载页面,我会看到我尝试导航到的 View 。
我做错了什么?
这是一个 video demonstrating the behavior I'm experiencing .我在视频中引用的代码包含在下面。
require.config({
paths: { "text": "durandal/amd/text" }
});
define(function (require) {
var system = require('durandal/system'),
app = require('durandal/app'),
router = require('durandal/plugins/router'),
viewLocator = require('durandal/viewLocator'),
logger = require('services/logger');
system.debug(true);
app.start().then(function () {
// route will use conventions for modules
// assuming viewmodels/views folder structure
router.useConvention();
// When finding a module, replace the viewmodel string
// with view to find it partner view.
// [viewmodel]s/sessions --> [view]s/sessions.html
// Otherwise you can pass paths for modules, views, partials
// Defaults to viewmodels/views/views.
viewLocator.useConvention();
// Will assume that a URL to #/something corresponds to a viewmodels/something viewmodel.
// http://durandaljs.com/documentation/Router/)
//router.mapAuto();
var routes = [{
url: 'welcome',
moduleId: 'viewmodels/welcome',
name: 'Welcome',
visible: true
}, {
url: 'primaryapplicants',
moduleId: 'viewmodels/primaryapplicants',
name: 'Primary Applicants',
visible: true
}];
router.map(routes);
app.setRoot('viewmodels/shell');
// override bad route behavior to write to
// console log and show error toast.
// This method also accepts a "params" parameters, but we're not using it,
// and to avoid JSLint warnings, we're not including it.
router.handleInvalidRoute = function (route) {
logger.logError('No route found', route, 'main', true);
};
});
});
<div>
Shell HTML
<ul id="navbar">
<li><a href="#/welcome">Welcome</a></li>
<li><a href="#/primaryapplicants">Primary Applicants</a></li>
</ul>
<!--ko compose: {model: router.activeItem} -->
<!--/ko-->
</div>
define(['durandal/system', 'services/logger', 'durandal/plugins/router'],
function (system, logger, router) {
function activate() {
// Listen for click events so we can navigate
$('body').on('click', '#navbar a', function (event) {
var navTo = '#/welcome';
navTo = event.target.hash;
logger.log('Attempting navigation to ' + navTo,
null,
system.getModuleId(shell),//ignore jslint
true);
router.navigateTo(navTo);
//alert("About to navigate to " + event.target.hash);
//router.navigateTo(event.target.hash);
});
logger.log('Shell loaded',
null,
system.getModuleId(shell),//ignore jslint
true);
return router.activate('welcome');
}
var shell = {
activate: activate,
router: router
};
return shell;
}
);
最佳答案
通常情况下,一旦您找到解决方案,它就真的很简单。
显然,在 compose 绑定(bind)(Durandal 提供的自定义 Knockout 绑定(bind))中,您必须有一个 afterCompose 绑定(bind)。换句话说,这:
<!--ko compose: {model: router.activeItem} -->
<!--/ko-->
需要改成这样:
<!--ko compose: {model: router.activeItem, afterCompose: router.afterCompose} -->
<!--/ko-->
没有它,我的导航将无法工作。这是 stated clearly enough in the docs ,但我还是以某种方式错过了它:
You must wire both the model and the afterCompose callback to the router in order for everything to work properly.
关于javascript - Durandal 路由不起作用——我是否缺少配置设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403903/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!