none
使用JS编写Metor应用时Grid样式的模板,navigator.js里这段代码如何理解? RRS feed

  • 问题

  • 我在navigator.js里看到这段代码:

    // This function responds to navigation by adding new pages
    // to the DOM.
    _navigated: function (eventObject) {
        var newElement = this._createPageElement();
        var parentedComplete;
        var parented = new WinJS.Promise(function (c) { parentedComplete = c; });
    
        var that = this;
        WinJS.UI.Pages.render(eventObject.detail.location, newElement, eventObject.detail.state, parented).
            then(function (control) {
                that.element.appendChild(newElement);
                that.element.removeChild(that.pageElement);
                parentedComplete();
                document.body.focus();
                that.navigated();
            });
    },

    请问render方法的最后一个参数parented是做什么的?这是一个promise对象,我看到在render操作完成后调用parentComplete,这意味着parented操作也完成了,但这为什么要这么做?文档里等于没说。


    Happy programming, happy life.
    http://blog.zhaojie.me/

    2012年3月14日 13:15

答案

  • base.js 中 3448注释:

                /// <param name="parentedPromise" isOptional="true" locid="WinJS.UI.Pages.render_p:parentedPromise">
                /// A promise that is fulfilled when the specified element is parented to the final document.
                /// </param>
    这样做的原因就是要等待页面完全创建好。在异步的环境下做到了类似同步的效果。先生成后导航。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月15日 12:32
    版主