首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dojo/domReady!和dojo/现成的澄清

dojo/domReady!和dojo/现成的澄清
EN

Stack Overflow用户
提问于 2016-12-06 09:41:00
回答 1查看 477关注 0票数 1

我已经看过文件了:

https://dojotoolkit.org/reference-guide/1.10/dojo/domReady.html

还有一个相关的问题:

dijit/注册表和dojo/domReady的Dojo定时问题

但我还是不确定正确的方法。和其他用户一样,我有一个(相当长的)单页web应用程序,有几个视图。

我所有的js都需要dojo/domReady!,但是它不足以保证dijit/registry在加载时的正确行为。这是我的配置:

代码语言:javascript
复制
script(type="text/javascript").
    dojoConfig = {
        has: {
            "dojo-firebug": false,
            "dojo-debug-messages": false,
            isDebug: false
        },
        parseOnLoad: false,
        mblHideAddressBar: true,
        async: true
    };

script(src="/javascripts/dojo/dojo.js")
script(type="text/javascript").
    require([
        "dojox/mobile/parser",
        "dojox/mobile/View",
        "dojox/mobile/Button",
        "dojox/mobile/TextBox",
        "dojox/mobile/RoundRect",
        "dojox/mobile/FilteredListMixin",
        "dojox/mobile/TextArea",
        "dojox/mobile/Switch",
        "dojox/mobile/FormLayout",
        "dojox/mobile/SimpleDialog",
        "dojo/domReady!"
    ], function (parser) {
        parser.parse();
    });

然后,对于每个视图,我都有一个js函数,类似于这个模板:

代码语言:javascript
复制
#viewLogin(data-dojo-type="dojox/mobile/View" data-dojo-props="selected:true")
...

script(type="text/javascript").
    require([
        "dojo/dom",
        "dojo/on",
        "dojo/request/xhr",
        "dojo/dom-form",
        "dojo/_base/window",
        "dijit/registry",
        "dojox/mobile/parser",
        "dojox/mobile/View",
        "dojox/mobile/compat",
        "dojox/mobile/Button",
        "dojox/mobile/TextBox",
        "dojox/mobile/RoundRect",
        "dojox/mobile/FormLayout",
        "dojox/mobile/SimpleDialog",
        "dojo/domReady!"
    ], function (dom, on, xhr, domForm, win, registry) {
        var txt = registry.byId("txtName").set("value", userName);
        ...

足够将每个js脚本中的所有代码打包到ready(function(){ });中了吗?

实际上,这个问题可以分为两部分:

  1. 能起作用吗?
  2. 这是推荐的方法吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 20:01:43

dojo/就绪医生暗示dojo/domReady是可预测的。这两种方法都可以处理DOM准备就绪的问题,这意味着AMD资源已经加载,浏览器已经准备好了初始DOM。解析DOM、创建小部件和运行代码是domReady之后的下一步。

您发布的两个示例都仅由dojo/domReady保护,因此视图代码可以在解析器仍在扫描DOM和创建小部件实例之前运行。您需要一些其他方法来告诉应用程序一切就绪,或者在尝试将数据加载到小部件时进行更改。

dojo/Parser.parse返回一个承诺,因此您可以使用它来知道解析何时完成(请参阅文档中的警告),从而创建小部件。然后,您可以启动视图,或者发布一个主题,让其他对象知道事情已经准备好了。

获取userName的请求可以在小部件的startup方法中完成。虽然这会将您的小部件与数据结合起来,但这并不好。其他一些对象可能负责获取数据以及创建和启动视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40992149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档