public static async Task<IHTMLBinding> Bind(IHTMLWindow view, string iViewModel) { var context = view.MainFrame; var root = await context.EvaluateAsync(() => { var json = context.GetGlobal().GetValue("JSON"); return json.Invoke("parse", context, context.Factory.CreateString(iViewModel)); }); var injector = new JavascriptSessionInjector(context, null); var mappedroot = injector.Map(root, null); await injector.RegisterInSession(mappedroot); return new StringBinding(context, mappedroot, injector); }
private async Task InjectInHTLMSession(IJSCSGlue iroot, bool isroot = false) { if ((iroot == null) || (iroot.Type == JSCSGlueType.Basic)) { return; } if ((iroot.Type == JSCSGlueType.Object) && (iroot.JSValue.IsNull)) { return; } var jvm = new JavascriptMapper(iroot as IJSObservableBridge, this); var res = _SessionInjector.Map(iroot.JSValue, jvm, (iroot.CValue != null)); await jvm.UpdateTask; if (isroot) { await _SessionInjector.RegisterInSession(res); } }