DurandalJS如何在不渲染页面的情况下重定向?

时间:2014-05-18 13:18:03

标签: javascript jquery durandal-2.0 durandal-navigation

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

其实我想要的是做一些逻辑并刷新同一页面而不显示闪屏。

例如,我有简单的HTML链接:

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

在language.js中,我有简单的代码,可以在&#34;激活&#34;功能:

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文档并在谷歌搜索,但找不到任何有用的信息。

  

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

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

修改

我想阻止设置/加载渲染和REFRESH我导航的上一页。

1 个答案:

答案 0 :(得分:0)

是的,你可以return false使用canActivate lifeCycle函数(Read more here

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