我将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之前,注销链接有效。但现在,只有浏览器的网址更改为“http://localhost:8000/user/logout/
”(这是链接的正确网址)。只有在重新加载页面后,用户才能注销。
在我的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')。在此之后,浏览器的网址会更改为“http://localhost:8000/www.stackoverflow.com
”但不起作用。如何解决这个问题?
答案 0 :(得分:1)
this.get('/user/logout', function() {
location.assign('/user/logout');
});
...或者,直接写一个简单的函数绕过SammyJs来处理这种情况:
function goToExternaLink(url) {
window.location = url;
}
然后使用a
在您的onclick
代码中调用此函数,如下所示:
<a tabindex="-1" onclick="goToExternalLink('{% url 'user:logout' %}')">Logout</a>
但onclick
不是很漂亮......
答案 1 :(得分:1)
该行:
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');