Skip to content

Commit

Permalink
Fix code generation with options.knockoutContext
Browse files Browse the repository at this point in the history
The problem was that we ignored the user-specified context
in static commands. Now we use options.knockoutContext only if
no context is specified.
  • Loading branch information
exyi committed Nov 7, 2021
1 parent 4baffa4 commit 194eee5
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/Framework/Framework/Controls/KnockoutHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ string getHandlerScript()
}
else
{
knockoutContext = CodeParameterAssignment.FromIdentifier("options.knockoutContext");
knockoutContext = options.KoContext ?? CodeParameterAssignment.FromIdentifier("options.knockoutContext");
viewModel = CodeParameterAssignment.FromIdentifier("options.viewModel");
}
var abortSignal = options.AbortSignal ?? CodeParameterAssignment.FromIdentifier("undefined");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

<!-- ko with: int -->
<div data-bind="dotvvm-with-control-properties: { Click: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => {
await dotvvm.staticCommandPostback(&quot;WARNING/NOT/ENCRYPTED+++WyJEb3RWVk0uRnJhbWV3b3JrLlRlc3RzLkJpbmRpbmcuVGVzdFNlcnZpY2UsIERvdFZWTS5GcmFtZXdvcmsuVGVzdHMiLCJTYXZlIixbXSwxLG51bGwsIkFRQT0iXQ==&quot;, [options.knockoutContext.$parent.int.state], options);
},$element,[],args,options.knockoutContext)) }">
await dotvvm.staticCommandPostback(&quot;WARNING/NOT/ENCRYPTED+++WyJEb3RWVk0uRnJhbWV3b3JrLlRlc3RzLkJpbmRpbmcuVGVzdFNlcnZpY2UsIERvdFZWTS5GcmFtZXdvcmsuVGVzdHMiLCJTYXZlIixbXSwxLG51bGwsIkFRQT0iXQ==&quot;, [$context.$parent.int.state], options);
},$element,[],args,$context)) }">
<input onclick="dotvvm.applyPostbackHandlers(async (options) => {
let a;
return await((a = options.knockoutContext.$control.Click.state) &amp;&amp; a());
Expand All @@ -14,8 +14,8 @@
<!-- /ko -->
<div data-bind="foreach: { data: Collection }">
<div data-bind="dotvvm-with-control-properties: { Click: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => {
await dotvvm.staticCommandPostback(&quot;WARNING/NOT/ENCRYPTED+++WyJEb3RWVk0uRnJhbWV3b3JrLlRlc3RzLkJpbmRpbmcuVGVzdFNlcnZpY2UsIERvdFZWTS5GcmFtZXdvcmsuVGVzdHMiLCJTYXZlIixbXSwxLG51bGwsIkFRQT0iXQ==&quot;, [options.knockoutContext.$rawData.state], options);
},$element,[],args,options.knockoutContext)) }">
await dotvvm.staticCommandPostback(&quot;WARNING/NOT/ENCRYPTED+++WyJEb3RWVk0uRnJhbWV3b3JrLlRlc3RzLkJpbmRpbmcuVGVzdFNlcnZpY2UsIERvdFZWTS5GcmFtZXdvcmsuVGVzdHMiLCJTYXZlIixbXSwxLG51bGwsIkFRQT0iXQ==&quot;, [$rawData.state], options);
},$element,[],args,$context)) }">
<input onclick="dotvvm.applyPostbackHandlers(async (options) => {
let a;
return await((a = options.knockoutContext.$control.Click.state) &amp;&amp; a());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<html>
<head></head>
<body>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, commands: { scmd: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call(&quot;p0&quot;, &quot;myCmd&quot;, [args[0]]),$element,[],args,options.knockoutContext)) }, props: { troll: 1 }, templates: { MyTemplate: &quot;nd32PDzj7nMLlQAzyEgX84ylX61EVYZpjwVI25SuM74=&quot; }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, commands: { scmd: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call(&quot;p0&quot;, &quot;myCmd&quot;, [args[0]]),$element,[],args,$context)) }, props: { troll: 1 }, templates: { MyTemplate: &quot;nd32PDzj7nMLlQAzyEgX84ylX61EVYZpjwVI25SuM74=&quot; }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, props: { troll: 1 }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, props: { lol: int }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, commands: { cmd: (...args)=>(dotvvm.postBack($element,[],&quot;Rrba2KXEPUp2v+qm&quot;,&quot;&quot;,$context,[],args,undefined)) }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, commands: { scmd: (...args)=>(dotvvm.applyPostbackHandlers((options) => options.viewModel.int(args[0]).int(),$element,[],args,options.knockoutContext)) }, view: &quot;p0&quot; }"></div>
<div data-bind="dotvvm-js-component: { name: &quot;Bazmek&quot;, commands: { scmd: (...args)=>(dotvvm.applyPostbackHandlers((options) => options.viewModel.int(args[0]).int(),$element,[],args,$context)) }, view: &quot;p0&quot; }"></div>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
<head></head>
<body>
async static command with arg
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "1", command: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call("p0", "myCmd", [args[0]]),$element,[],args,options.knockoutContext)) } -->
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "1", command: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call("p0", "myCmd", [args[0]]),$element,[],args,$context)) } -->
<!-- /ko --> Command with arg
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "2", command: (...args)=>(dotvvm.postBack($element,[],"yRBKC1vu64PakIw5","",$context,[],args,undefined)) } -->
<!-- /ko --> sync static command with argument
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "3", command: (...args)=>(dotvvm.applyPostbackHandlers((options) => options.viewModel.int(args[0]).int(),$element,[],args,options.knockoutContext)) } -->
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "3", command: (...args)=>(dotvvm.applyPostbackHandlers((options) => options.viewModel.int(args[0]).int(),$element,[],args,$context)) } -->
<!-- /ko --> Just command
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "4", command: ()=>(dotvvm.postBack($element,[],"mG+gjNG3qwd9ds35","",$context,[],[],undefined)) } -->
<!-- /ko --> async static command
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "5", command: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call("p0", "myCmd", []),$element,[],args,options.knockoutContext)) } -->
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "5", command: (...args)=>(dotvvm.applyPostbackHandlers(async (options) => await dotvvm.viewModules.call("p0", "myCmd", []),$element,[],args,$context)) } -->
<!-- /ko --> sync static command
<!-- ko dotvvm-named-command: { viewIdOrElement: "p0", name: "6", command: (...args)=>(dotvvm.applyPostbackHandlers((options) => {
0;
},$element,[],args,options.knockoutContext)) } -->
},$element,[],args,$context)) } -->
<!-- /ko -->
</body>
</html>

0 comments on commit 194eee5

Please sign in to comment.