我正在将KnockoutJS与SammyJS一起用于客户端模板和Django框架
在我的应用程序的顶部栏中,有一个用于用户注销的下拉菜单。这是它的代码-

<div class="pull-right user">
    <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
        <p><span id="topbar_first_name"></span></p>
        <b class="caret"></b>
        <ul class="dropdown-menu" role="menu">
            <li><a tabindex="-1" href="{% url 'user:logout' %}">Logout</a></li>
        </ul>
    </a>
</div>


在我开始使用SammyJS之前,注销链接已经起作用。但是现在,只有浏览器的URL更改为'http://localhost:8000/user/logout/'(这是链接的正确URL)。只有在重新加载页面之后,用户才可以注销。

在我的JS文件中,这是Sammy的唯一功能-

Sammy(function() {
    this.get('#:folder', function() {
        self.chosenFolderId(this.params.folder);
        $.get('/tasks/get', { folder: this.params.folder }, function(data) {
            self.tasks_list(data);
        });
    });

    this.get('', function() {
        this.app.runRoute('get', '#Active')
    });
}).run();


我尝试将“ href”更改为外部链接(例如“ www.stackoverflow.com”)。此后,浏览器的URL更改为“ http://localhost:8000/www.stackoverflow.com”,但它不起作用。如何消除这个问题?

最佳答案

该行:

this.get('', function() {
    this.app.runRoute('get', '#Active')
});


弄乱了您的链接。这告诉SammyJS拦截所有链接。您要达到什么目的?我会做的是:

Sammy(function() {
   this.get('#:folder', function() {
       self.chosenFolderId(this.params.folder);
      $.get('/tasks/get', { folder: this.params.folder }, function(data) {
        self.tasks_list(data);
       });
    });

}).run('#Active');

关于javascript - SammyJS无法与Django一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16918654/

10-12 21:09