public void addView(JsString url, object viewData) { if (!hasView(url)) { //this is one point that I conced we should consider making async var content = contentParser.parse( contentLoader.synchronousFragmentLoad( url ) ); var div = new HtmlDivElement(); var fragment = jQueryContext.J( div ); fragment.hide(); fragment.html( content ); fragment.css( "width", "100%" ); fragment.css( "height", "100%" ); fragment.css( "position", "absolute" ); fragment.css( "top", "0" ); fragment.css( "left", "0" ); var mediatorCapturer = new MediatorCapturer(); domWalker.walkDomFragment( div, mediatorCapturer ); rootElement.append( div ); views[ url ] = fragment; mediators[ url ] = mediatorCapturer.mediator; } selectView( url, viewData ); }
public Promise<AbstractMediator> pushView(JsString url ) { Promise<AbstractMediator> promise; var stack = this; var div = new HtmlDivElement(); var fragment = jQueryContext.J(div); fragment.hide(); fragment.css("width", "100%"); fragment.css("height", "100%"); fragment.css("position", "absolute"); fragment.css("top", "0"); fragment.css("left", "0"); fragment.data( "url", url ) ; promise = contentLoader.asynchronousLoad(url).thenR<AbstractMediator>(delegate(string result) { var content = contentParser.parse(result); fragment.html(content); fragment.attr( "data-url", url ); decoratedNode.append(div); var mediatorCapturer = new MediatorCapturer(); domWalker.walkDomFragment(div, mediatorCapturer); viewFragmentStack.push(fragment); var mediator = mediatorCapturer.mediator; mediators[ url ] = mediator; showView(_currentView, fragment); _currentView = fragment; return mediator; } ); return promise; }