如何让dojo监听器监听新添加的html片段's事件
How to make dojo listener listen to newly added html fragment's event?
实际上,我对DOJO的开发还很陌生。我有几个问题要问谁在DOJO开发方面有经验。
我有一些html片段是通过dojo ajax调用加载的(当index.html url链接被点击时,主html和javascript已经提前加载(,新加载的片段只更新了整个index.html中的一个div,但整个index.html保持未刷新。
在新加载的html片段中有一些DOM元素(例如一些输入字段和按钮(。我需要通过调用javascript中的一些dojo函数来访问新加载的html片段中的字段。但我从来没有得到它的工作??
我已经编写了一些dojo脚本函数作为DOM事件监听器,等待新加载的html片段并单击按钮,但我总是收到错误或根本没有响应。
我新加载的html片段为:
<span>Enter your email to sign in</span>
<br><input type="text" placeholder="your@email.com" name="email" id="email" />
<br><input type="password" placeholder="your pass word" name="password" id="password" />
<br>
<input value="Sign in" name="Sign in" id="Sign in" class="submit" data-dojo-type="dijit.form.Button" data-dojo-props="onClick: handleClick" data-dojo-id="dojo Sign in" type="submit" />Or<input value="Sign me up" name="Sign me up" id="Sign me up" class="submit" type="submit" />
我的dojo脚本为:
require(["dijit.form.Button"], function handleClick () {
console.log("some button was clicked.");
}
);
我得到的错误信息是:
Error: scriptError
_f()dojo.js (line 15)
req.injectUrl/_10b<()dojo.js (line 15)
...}return ret;};};var _364=function(node,root){var pn=node.parentNode;while(pn){if…
我完全输了,知道吗?感谢。
更新说明:
当我添加一些更需要的模型时,我的功能看起来像:
require(["dojo/dom",
"dojo/on",
"dojo/parser",
"dijit/registry",
"dijit/form/Button",
"dojo/domReady!"], function handleClick () {
console.log("some button was clicked.");
}
);
我得到了其他错误信息:
dojo/parser::parse() error
Error: ReferenceError: handleClick is not defined in data-dojo-props='onClick: handleClick'
throw new Error(e.toString()+" in data-dojo-props='"+_49+"'");
它没有按预期工作,假设这个函数将加载到浏览器中,然后等待DOM元素"登录"按钮被点击,如果按钮没有被点击,就不会发生脚本操作,但不幸的是,侦听器函数在脚本刚加载时被触发,无论点击按钮事件是否发生,它总是打印一个字符串"某个按钮被点击"。"在我的firebug控制台中。似乎其他任何事件都可以触发此操作。
对于错误消息,脚本似乎已经从我的MVC控制器中找到了调用方定义,它知道调用方在哪里。但他们不知道调用者(被放在一个html片段中,它将由dojo ajax调用加载,这个ajax调用将检查会话是否需要登录,如果需要登录,MVC控制器将发送这个片段,换句话说,这个片段永远不会加载。(不在这里,甚至不在DOM中。
我知道dojo支持异步函数调用,但调用程序不存在呢?或者稍后加载调用者?这就是调用者和监听器之间的关系,如果调用者不在,监听器为什么工作?如何让dojo监听器知道,调用者不在这里或者没有链接到监听器?
对不起,问题太多了,但没有按预期进行,所以我迷路了。
@Shoe的良好链接您必须再次查看Modern Dojo才能更好地了解Dojo AMD。
require(["dojo/dom", "dojo/domReady!"], function(dom){
dom.byId("helloworld").innerHTML = "Hello New World!";
});
这是现代dojo编码的正确语法。这里的函数是在加载dojo/dom.js
时调用的。如果dom.js
调用define((,那么在加载了dom
的依赖项之前,函数不会被激发,并且dom
参数将保存dojo/util
的模块值。
- 具有服务器端呈现的HTML片段的主干模型
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- 将代码片段转换为 HTML 页面
- KnockoutJS-打印html片段
- 如何将 HTML 字符串附加到文档片段
- 使用 AngularJS 解析 HTML 片段
- 使用 Javascript 或所见即所得打开和编辑 html 页面的片段
- 保留粘贴到 IE 中的 HTML 片段的条件注释
- 如何使用 JQuery 从另一个文件加载 HTML 片段
- Fancybox:如何滚动HTML片段,而不是具有相同效果的图像
- 如何重用HTML片段,但更改其中元素的ID
- 在libxmljs中附加html片段作为节点值
- 为单页应用程序构建HTML和JS片段的时组装
- 如何将HTML片段转换为另一个HTML片段
- 使用jQuery查找离滚动位置最近的HTML片段标识符
- Backbone.js-如何包含外部HTML片段
- 如何为拥有它的HTML片段提供初始数据'自己的控制器
- 我可以将HTML片段存储在不同的文件中,但可以通过JavaScript访问吗
- 如何存储HTML片段并稍后将其插入文档中
- 正在为HTML片段中的img标记设置baseUrl