如果没有在dojo.connect期间返回的"句柄",如何删除dojo连接事件?
我的例子涉及动态地将一组事件分配给一组对象.(为简单起见,事件是onclick和ondblclick,对象是表中的行)
因此,在页面设置期间,事件连接到每一行(onclick,ondblclick).现在,根据用户的期望/动作,需要从一行中删除一个事件.但原来的手柄已不再可用.因此,以下内容不起作用: dojo.disconnect(row, "onclick", ??*).如何在不破坏原始行结构的情况下解决这个问题?
任何帮助当然非常感谢.
与jQuery .live()等效的Dojo是什么?
http://api.jquery.com/live/
我找到的唯一解决方案是dojo.disconnect事件处理程序,并在向页面添加动态标记后重新连接它们.
我们有一个现有的Rails 3.1面向消费者的Web应用程序,并且正在重新设计UI,使其更具交互性,活泼,类似应用程序.
我们有一个适度复杂的数据模型,但对基于表单的用户输入只有适度的需求.
我们现在使用jQuery,使用插件来做很好的效果,但总的来说,我们的JS技能很弱.
我们的主要目标是找到一个框架,帮助我们构建和组织JS代码,并简化我们在Rails 3.1世界中拥有数据绑定,AJAX等的情况.
我们将学习如何正确地学习JS,但是当我们这样做时,是否有一个我们可以学习并在其中工作的清晰框架?
我真的是dojo的新手但是当我开始使用dojo版本1.7.2开发新的应用程序时,我也想使用新的AMD语法来实现功能.不幸的是我似乎没有得到它.:-(
让我最烦的是我不能简单地调用任何"require"-block中的函数.例如,我有一个页面,在开始时创建一个动态表,每行有几个小部件.然后我有一个按钮,每按一次就会添加一个空行.
没有AMD语法就很容易:
- 把我所有的"dojo.require()"放在HEAD中
- 然后创建一堆我自己的函数来创建表和小部件
- 添加行函数可以轻松访问任何全局变量我以前的功能填写了
但对于AMD来说,它是这样的:
初始函数创建表和小部件:
function fillReportTable(repId) {
require(["dojo/dom-construct", "dojo/dom-attr", "dijit/form/FilteringSelect",
"dojo/data/ItemFileReadStore", "dijit/form/ComboBox", "dijit/form/DateTextBox", "dijit/form/Select", "dojo/store/Memory"],
function (domConstruct, domAttr, FilteringSelect, ItemFileReadStore, ComboBox, DateTextBox, Select, Memory) {
// a lot of code to create the table, consisting of SEVERAL functions
function createNewRow(tbl) { ...}
function function1 () {... }
function function2 () {... }
function function3 () {... }
}
Run Code Online (Sandbox Code Playgroud)
现在,"添加空行"按钮调用自己的函数"addEmptyRow".
但是在这个函数中我必须:
- 再次为每个dojo模块做一个其他的需求
- 我不能使用任何"fillReportTable"函数"内部"的函数.例如"createNewRow"函数
function addEmptyRow() {
require(["dojo/dom-construct", "dojo/dom-attr", "dijit/form/FilteringSelect",
"dojo/data/ItemFileReadStore", "dijit/form/ComboBox", "dijit/form/DateTextBox", …Run Code Online (Sandbox Code Playgroud) 我的HTML 5应用程序的用户可以在表单中输入他的名字,此名称将显示在其他地方.更具体地说,它将成为innerHTML一些HTML元素.
问题是,如果您在表单中输入有效的HTML标记,即可以使用某种HTML注入,则可以利用此功能.
用户名只存储并显示在客户端,因此最终用户自己是唯一受影响的人,但它仍然很草率.
在将它innerHTML放入Dojo 中的元素之前,有没有办法逃避字符串?我猜Dojo在某一点确实有这样的函数(dojo.string.escape())但它在版本1.7中不存在.
谢谢.
dojo文档中提到了两种类型声明.他们是data-dojo-type和dojotype.
例如,
dojoType="dojox.grid.DataGrid"
data-dojo-type="dojox.grid.DataGrid"
Run Code Online (Sandbox Code Playgroud)
两者在所有主流浏览器中都运行良好.但我不明白,data-dojo-type和dojotype有什么区别?
我应该在哪里使用dojoType?我应该在哪里使用data-dojo-type?
我的HTML中有2个div.
<div id="div1"></div>
<div id="div2"></div>
Run Code Online (Sandbox Code Playgroud)
点击"div2"我想加载外部javascript文件,例如" https://abcapis.com/sample.js ".
我尝试在下面的onclick事件中包含JS文件,
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://abcapis.com/sample.js";
document.getElementsByTagName("head")[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)
这包括head部分中的脚本标记,但由于脚本标记仅在页面加载时加载,因此未加载(如果我错了,请在此处更正).
还有其他方法可以继续吗?
提前致谢.
我需要在没有iFrame的情况下在我的应用程序中打开外部网站,我还需要将一些标题值传递给该外部网站.
帮我..
我遇到了似乎鸡和蛋的问题,并且我认为这是一个合乎逻辑的解决方案.然而,在我看来,其他人肯定遇到过类似的东西,所以我想我会把它漂到那里为群众.
情况是我想使用dojo的addOnLoad函数来排队一些回调,这些回调应该在DOM完成客户端渲染之后执行.所以我正在做的如下:
<html>
<head>
<script type="text/javascript" src="dojo.xd.js"></script>
...
</head>
<body>
...
<script type="text/javascript">
dojo.addOnLoad( ... );
dojo.addOnLoad( ... );
...
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
现在,问题是我似乎在整个Dojo库下载浏览器之前调用了dojo.addOnLoad.这在某种程度上是有道理的,因为内联SCRIPT内容应该在加载整个DOM 之前执行(并且触发正常的主体onload回调).
我的问题是 - 这是我的方法声音,或者更有意义的是注册普通/标准正文onload JavaScript回调来调用一个函数,它执行与每个dojo.addOnLoads在SCRIPT块中所做的相同的工作.当然,这就引出了一个问题,如果您不能保证在使用库之前加载Dojo库,为什么还要使用dojo.addOnLoad呢?
希望这种情况对我以外的人有意义.好像其他人可能遇到过这种情况.
思考?
最诚挚的问候,Adam Rice
registry.byId和dom.byIddojo有什么区别?使用有什么好处registry.byId?
在下面的代码我使用的是dijit/registry和dojo/dom两个文本框我的(#myTextBox3)和我的文本节点(#textNode3).其中只有两个提供了结果.
require(["dojo/parser", "dojo/dom", "dijit/registry", "dijit/form/TextBox", "dojo/domReady!"],
function(parser, dom, registry) {
parser.parse();
// Locate the JS object.
var dibiWidget = registry.byId("myTextBox3");
var dobiWidget = dom.byId("myTextBox3");
var dibiDOM = registry.byId("textNode3");
var dobiDOM = dom.byId("textNode3");
dom.byId("textNode3").innerHTML = "registry.byId for widget id returned: " + dibiWidget + "<br>" +
"dom.byId for widget id returned: " + dobiWidget + "<br>" +
"registry.byId for dom id returned: " + dibiDOM + "<br>" …Run Code Online (Sandbox Code Playgroud) dojo ×10
javascript ×4
jquery ×3
html ×2
amd ×1
backbone.js ×1
disconnect ×1
dom ×1
escaping ×1
events ×1
innerhtml ×1
jsp ×1
knockout.js ×1
live ×1
onload ×1
web ×1