- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有什么
试图了解正在发生的事情以及如何控制它。对于尚未通过身份验证的用户,我有一个“公共(public)” View ,对于已通过身份验证的用户,我有一个“主页” View 。这是我的路线配置:
app.start().then(function() {
//Replace 'viewmodels' in the moduleId with 'views' to locate the view.
//Look for partial views in a 'views' folder in the root.
viewLocator.useConvention();
//configure routing
router.useConvention();
router.mapRoute('home', 'viewmodels/home', 'Test App', true);
router.mapRoute('public', 'viewmodels/public', 'Test App', true);
router.mapRoute('set/:id', 'viewmodels/set', 'Set');
router.mapRoute('folder/:id', 'viewmodels/folder', 'Folder');
router.mapRoute('api', 'viewmodels/api', 'API Reference');
router.mapRoute('error', 'viewmodels/error', 'Error', false);
app.adaptToDevice();
//Show the app by setting the root view model for our application with a transition.
if (dataservice.isAuthenticated() === true) {
app.setRoot('viewmodels/shell', 'entrance');
router.navigateTo('home');
} else {
app.setRoot('viewmodels/public');
router.navigateTo('#/public');
}
router.handleInvalidRoute = function (route, params) {
logger.logError('No route found', route, 'main', true);
router.navigateTo('#/error');
};
});
问题
当我第一次运行应用程序时,我没有通过身份验证,并且出现错误:
Uncaught TypeError: Cannot call method 'lookupRoute' of undefined
源自 'router.navigateTo('#/public');'
行。
然后当我尝试点击登录按钮时,我得到了同样的错误:
define(['durandal/app', 'durandal/plugins/router', 'services/dataservice'], function (app, router, dataservice) {
var publicViewModel = function () {
self.logIn = function () {
app.setRoot('viewmodels/shell');
router.navigateTo('#/home');
};
但内容加载正确。当我通过单击导航到特定页面时,说到/folder/2,然后将 url 更改为/folders/2(无效),我的日志中出现“找不到路由”,正如预期的那样,但我遇到了其他几个问题:
我想我以某种方式破坏了路由,但我不确定如何破坏。我该如何纠正上述问题?
屏幕:
最佳答案
我怀疑出于某种原因调用 navigateTo 可能为时过早。要测试这个理论,请尝试移动此代码。
if (dataservice.isAuthenticated() === true) {
app.setRoot('viewmodels/shell', 'entrance');
router.navigateTo('home');
} else {
app.setRoot('viewmodels/public');
router.navigateTo('#/public');
}
进入你的 publicviewmodel 的“activate”方法,在 main.js 中只留下这个:
app.setRoot('viewmodels/public');
编辑:旧建议
我相信您的 Root View 模型需要一个路由器属性。因此,修改您的公共(public) View 模型以添加一个:
define(['durandal/app', 'durandal/plugins/router', 'services/dataservice'], function (app, router, dataservice) {
var publicViewModel = function () {
self.router = router;
self.logIn = function () {
app.setRoot('viewmodels/shell');
router.navigateTo('#/home');
};
(你在哪里定义 self ?)
关于javascript - DurandalJS 路由行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16006405/
如何在父路由更改时触发停用事件。例如在“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.
我是一名优秀的程序员,十分优秀!