Dijit菜单(酒吧)与链接 [英] Dijit Menu (bar) with link
问题描述
菜单项包含链接('a'):
< li dojoType =dijit.MenuItemid =i_car_new>
< a href =/ RooTest / cars?form>创建新车< / a>
< / li>
菜单呈现正确,甚至链接显示为链接,但是当点击此链接在菜单中,注意到发生。 (我的实际解决方法是使用'window.location'添加'onClick'事件。)
但是我希望链接工作正常(用户点击,浏览请求新页面)。我的期望是错的吗?我需要改变什么,链接是否正常工作?
html.file中的相关部分
< HTML>
< head>
...
< script type =text / javascript> var djConfig = {parseOnLoad:true,isDebug:false};< / script>
< script type =text / javascriptsrc =/ RooTest / resources / dojo / dojo.js>< / script>
< script type =text / javascriptsrc =/ RooTest / resources / spring / Spring.js>< / script>
< script type =text / javascriptsrc =/ RooTest / resources / spring / Spring-Dojo.js>< / script>
< script type =text / javascriptlanguage =JavaScript> dojo.require(dojo.parser);< / script>
< / head>
< body class =tundra spring>
< div version =2.0id =menudojoType =dijit.MenuBar>
< script type =text / javascript>
dojo.require(dijit.MenuBar);
dojo.require(dijit.PopupMenuBarItem);
dojo.require(dijit.Menu);
dojo.require(dijit.MenuItem);
dojo.require(dijit.PopupMenuItem);
< / script>
< ul id =_ menu>
< li dojoType =dijit.PopupMenuBarItemid =c_car>
< h2> Car< / h2>
< ul dojoType =dijit.Menu>
< li dojoType =dijit.MenuItemid =i_car_new>
< a href =/ RooTest / cars?form>创建新车< / a>
< / li>
< li dojoType =dijit.MenuItemid =i_car_list
< a href =/ RooTest / cars>列出所有汽车< / a>
< / li>
< / ul>
< / li>
< / ul>
< / div>
< div id =main> ...< / div>< / body>< / html>
你不会离开页面的原因当您单击是因为MenuItem在单击时调用dojo.stopEvent - 请参阅 http://trac.dojotoolkit.org/browser/dojo/tags/release-1.6.1/dijit/MenuItem.js#L92
如果你想这样做很多,我会很乐意扩展MenuItem的东西(旧的语法,我没有转移到新的AMD的做法的方式,未经测试):
dojo.provide('dijit.anchorMenuItem');
dojo.require('dijit.MenuItem');
dojo.declare('dijit.anchorMenuItem',dijit.MenuItem,{
_onClick:function(evt){
this.getParent()。onItemClick(this,evt) ;
}
});
然后,当您想要一个简单的链接时,使用此代替默认的MenuItem。否则,按照你的说法,并在onClick处理程序上添加一个 window.location
的调用,但我认为这个更亲切。
I am using Dijit Menu bar with declartive markup.
The Menu items contains links ('a'):
<li dojoType="dijit.MenuItem" id="i_car_new">
<a href="/RooTest/cars?form">Create new Car</a>
</li>
The menu is rendered correct, and even the link is display as link, but when one click on this link in the menu, noting happens. (My actual workaround is to add an 'onClick' event with an 'window.location'.)
But I would expect that the links work like normal (user click, browswer request new page). So is my expectance wrong? And what must I change, that the links work?
relevant parts from the html.file
<html>
<head>
...
<script type="text/javascript">var djConfig = {parseOnLoad: true, isDebug: false};</script>
<script type="text/javascript" src="/RooTest/resources/dojo/dojo.js"></script>
<script type="text/javascript" src="/RooTest/resources/spring/Spring.js"></script>
<script type="text/javascript" src="/RooTest/resources/spring/Spring-Dojo.js"></script>
<script type="text/javascript" language="JavaScript">dojo.require("dojo.parser");</script>
</head>
<body class="tundra spring">
<div version="2.0" id="menu" dojoType="dijit.MenuBar">
<script type="text/javascript">
dojo.require("dijit.MenuBar");
dojo.require("dijit.PopupMenuBarItem");
dojo.require("dijit.Menu");
dojo.require("dijit.MenuItem");
dojo.require("dijit.PopupMenuItem");
</script>
<ul id="_menu">
<li dojoType="dijit.PopupMenuBarItem" id="c_car">
<h2>Car</h2>
<ul dojoType="dijit.Menu">
<li dojoType="dijit.MenuItem" id="i_car_new">
<a href="/RooTest/cars?form">Create new Car</a>
</li>
<li dojoType="dijit.MenuItem" id="i_car_list"
<a href="/RooTest/cars">List all Cars</a>
</li>
</ul>
</li>
</ul>
</div>
<div id="main">...</div></body></html>
The reason you don't navigate away from the page when you click is because the MenuItem calls dojo.stopEvent when you click it - see _onClick() at http://trac.dojotoolkit.org/browser/dojo/tags/release-1.6.1/dijit/MenuItem.js#L92
If you want to do this a lot I'd be tempted to extend the MenuItem with something like (old syntax, I've not moved over to the new AMD way of doing things yet, and untested):
dojo.provide('dijit.anchorMenuItem');
dojo.require('dijit.MenuItem');
dojo.declare('dijit.anchorMenuItem', dijit.MenuItem, {
_onClick: function(evt) {
this.getParent().onItemClick(this, evt);
}
});
And then use this in place of the default MenuItem when you want a simple link. Otherwise, do as your saying and add a call to window.location
on the onClick handler, but I think this is neater personally.
这篇关于Dijit菜单(酒吧)与链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!