【问题标题】:DurandalJS how to redirect without rendering the page?DurandalJS 如何在不渲染页面的情况下进行重定向?
【发布时间】:2014-05-19 20:11:26
【问题描述】:

是否可以通过哈希导航到某个页面,然后执行一些逻辑并重定向回来而不呈现新页面/模块,而是刷新我导航的那个页面/模块?

其实我想要的是做一些逻辑并刷新同一个页面而不显示启动画面。

例如我有简单的 HTML 链接:

<a class="language-link" href="#language/en-US">

在 language.js 中,我有简单的代码在“激活”函数中获取数据:

define(['plugins/router', 'jquery'], function (router, $) {
return {
    activate: function (culture) {
        return $.post("api/language", { '': culture }, function () {
            router.navigateBack();
        }).then(function () { return false; });
    },
    viewUrl: 'settings/loading'
}; });

但我的问题是,在短时间内,viewUrl 属性中的 loading.html 会显示出来。之后,我将返回上一页。

我想阻止 loading.html 页面呈现。怎么做?我正在浏览 Durandal 文档并在 google 中搜索,但找不到任何有用的信息。

.then(function () { return false; });

上面的代码是我尝试从激活函数返回 false 并阻止页面呈现,但不起作用:(

编辑

我想阻止设置/加载呈现并刷新我之前导航的页面。

【问题讨论】:

    标签: javascript jquery durandal-2.0 durandal-navigation


    【解决方案1】:

    是的,您可以通过 return false 使用 canActivate lifeCycle 函数 (Read more here) 来做到这一点

    define(['plugins/router', 'jquery'], function (router, $) {
    return {
        canActivate: function () {
            // some logic..
            // router.navigateBack();              
            return false;
          }
    }; });
    

    【讨论】:

    • 我也试过了,但是我导航的页面没有刷新。也许我对此不一致,但我想阻止设置/加载渲染并刷新我导航的上一个页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2012-04-10
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多