<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.everybodywiki.com/index.php?action=history&amp;feed=atom&amp;title=JavaScriptMVC</id>
	<title>JavaScriptMVC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.everybodywiki.com/index.php?action=history&amp;feed=atom&amp;title=JavaScriptMVC"/>
	<link rel="alternate" type="text/html" href="https://en.everybodywiki.com/index.php?title=JavaScriptMVC&amp;action=history"/>
	<updated>2026-06-09T02:22:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.everybodywiki.com/index.php?title=JavaScriptMVC&amp;diff=5462446&amp;oldid=prev</id>
		<title>WikiMasterBot2: automatic correction by IA</title>
		<link rel="alternate" type="text/html" href="https://en.everybodywiki.com/index.php?title=JavaScriptMVC&amp;diff=5462446&amp;oldid=prev"/>
		<updated>2025-11-22T01:56:27Z</updated>

		<summary type="html">&lt;p&gt;automatic correction by IA&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:56, 22 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot;&gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== History ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== History ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first release of JavaScriptMVC was published in May 2008. JavaScriptMVC 2.0 became stable in June 2009 and is based directly on jQuery, mainly to keep the code size small and to focus on its unique features. Version 3.0 was released in December 2010. CanJS, JavaScriptMVC&#039;s extracted MVC parts, was released in April 2012. In May 2015, JavaScriptMVC was rebranded as DoneJS&amp;lt;ref&amp;gt;{{Cite web |last=DoneJS |first=Bitovi&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;|title=donejs - donejs |url=https://donejs.com/ |access-date=2023-11-23 |website=donejs.com |language=en}}&amp;lt;/ref&amp;gt; with an extended feature set and scope.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first release of JavaScriptMVC was published in May 2008. JavaScriptMVC 2.0 became stable in June 2009 and is based directly on jQuery, mainly to keep the code size small and to focus on its unique features. Version 3.0 was released in December 2010. CanJS, JavaScriptMVC&#039;s extracted MVC parts, was released in April 2012. In May 2015, JavaScriptMVC was rebranded as DoneJS&amp;lt;ref&amp;gt;{{Cite web |last=DoneJS |first=Bitovi |title=donejs - donejs |url=https://donejs.com/ |access-date=2023-11-23 |website=donejs.com |language=en}}&amp;lt;/ref&amp;gt; with an extended feature set and scope.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;produces the following &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/del&gt;output&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;produces the following output:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;ul&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;ul&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l81&quot;&gt;Line 81:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 81:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Model ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Model ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;JavaScriptMVC&#039;s&#039;&#039;&#039; model and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;associated plugins provide lots of tools around organizing model data such as validations, associations, lists and more. But the core functionality is centered around service encapsulation, type conversion, and events.&amp;lt;ref&amp;gt;{{Cite web |title=JavaScriptMVC Overview |url=https://gist.github.com/jupiterjs/989117 |access-date=2022-07-15 |website=Gist |language=en}}&amp;lt;/ref&amp;gt; The Model class provides basic functionality to organize the application&#039;s data layer.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;JavaScriptMVC&#039;s&#039;&#039;&#039; model and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;its &lt;/ins&gt;associated plugins provide lots of tools around organizing model data such as validations, associations, lists and more. But the core functionality is centered around service encapsulation, type conversion, and events.&amp;lt;ref&amp;gt;{{Cite web |title=JavaScriptMVC Overview |url=https://gist.github.com/jupiterjs/989117 |access-date=2022-07-15 |website=Gist |language=en}}&amp;lt;/ref&amp;gt; The Model class provides basic functionality to organize the application&#039;s data layer.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$.Model(&amp;#039;Todo&amp;#039;, {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$.Model(&amp;#039;Todo&amp;#039;, {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiMasterBot2</name></author>
	</entry>
	<entry>
		<id>https://en.everybodywiki.com/index.php?title=JavaScriptMVC&amp;diff=3804821&amp;oldid=prev</id>
		<title>WikiMasterBot2: Moved page from wikipedia:en:JavaScriptMVC (history)</title>
		<link rel="alternate" type="text/html" href="https://en.everybodywiki.com/index.php?title=JavaScriptMVC&amp;diff=3804821&amp;oldid=prev"/>
		<updated>2023-12-06T13:35:17Z</updated>

		<summary type="html">&lt;p&gt;Moved page from &lt;a href=&quot;https://en.wikipedia.org/wiki/en:JavaScriptMVC&quot; class=&quot;extiw&quot; title=&quot;wikipedia:en:JavaScriptMVC&quot;&gt;wikipedia:en:JavaScriptMVC&lt;/a&gt; ([[Edithistory:|history]])&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Proposed deletion/dated&lt;br /&gt;
  |concern = Fails [[WP:NSOFT]]&lt;br /&gt;
  |timestamp = 20231205080455&lt;br /&gt;
  |nom = 85.48.187.59&lt;br /&gt;
  |help = &lt;br /&gt;
}}&lt;br /&gt;
{{Short description|Open-source rich internet application}}&lt;br /&gt;
{{Update||date=July 2020|talksection=Needs_Updates_-_2020-07|reason=The JavaScriptMVC project has since become DoneJS}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                   = JavaScriptMVC&lt;br /&gt;
| logo                   = Javascriptmvc.png&lt;br /&gt;
| logo size              = 192px&lt;br /&gt;
| developer              = Justin B. Meyer, Brian Moschel&lt;br /&gt;
| released               = {{Start date and age|2008|05}}&lt;br /&gt;
| discontinued           = yes&lt;br /&gt;
| latest release version = 3.3&lt;br /&gt;
| latest release date    = {{Start date and age|2013|07|23}}&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &amp;lt;!-- {{Start date and age|YYYY|MM|DD}} --&amp;gt;&lt;br /&gt;
| replaced_by            = DoneJS&lt;br /&gt;
| programming language   = [[JavaScript]]&lt;br /&gt;
| operating system       = [[Cross-platform]]&lt;br /&gt;
| license                = [[MIT License]]&amp;lt;ref name=&amp;quot;github.com/bitovi/javascriptmvc&amp;quot;&amp;gt;{{cite web|url=https://github.com/bitovi/javascriptmvc/blob/master/license.md|title=JavaScriptMVC license|publisher=Bitovi|accessdate=12 December 2012}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| website                = {{Official URL}}&lt;br /&gt;
}}&lt;br /&gt;
{{Portal|Free and open-source software}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JavaScriptMVC&amp;#039;&amp;#039;&amp;#039; was an open-source [[rich Internet application]] framework based on [[jQuery]] and [[OpenAjax Alliance|OpenAjax]]. It extends those libraries with a [[model–view–controller]] architecture and tools for testing and deployment. Because it does not depend on server components, it can be combined with any web-service interface and server-side language like [[ASP.NET]], [[Java (programming language)|Java]], [[Perl]], [[PHP]], [[Python (programming language)|Python]], or [[Ruby (programming language)|Ruby]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The first release of JavaScriptMVC was published in May 2008. JavaScriptMVC 2.0 became stable in June 2009 and is based directly on jQuery, mainly to keep the code size small and to focus on its unique features. Version 3.0 was released in December 2010. CanJS, JavaScriptMVC&amp;#039;s extracted MVC parts, was released in April 2012. In May 2015, JavaScriptMVC was rebranded as DoneJS&amp;lt;ref&amp;gt;{{Cite web |last=DoneJS |first=Bitovi- |title=donejs - donejs |url=https://donejs.com/ |access-date=2023-11-23 |website=donejs.com |language=en}}&amp;lt;/ref&amp;gt; with an extended feature set and scope.&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
A controller is a list of functions that gets called back when the appropriate event happens. The name of the function provides a description of when the function should be called. By naming functions in the correct way, the Controller recognizes them as Actions and hooks them up correctly, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$.Controller(&amp;#039;TodosController&amp;#039;,{&lt;br /&gt;
  &amp;quot;.todo mouseover&amp;quot;: function(el, ev){&lt;br /&gt;
    el.css(&amp;quot;backgroundColor&amp;quot;,&amp;quot;red&amp;quot;)&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;.todo mouseout&amp;quot;: function(el, ev){&lt;br /&gt;
    el.css(&amp;quot;backgroundColor&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;#create_todo click&amp;quot; : function(){&lt;br /&gt;
    this.find(&amp;quot;ol&amp;quot;).append(&amp;quot;New Todo&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A controller can also handle [[OpenAjax Alliance|OpenAjax]] events, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$.Controller(&amp;#039;TodosController&amp;#039;,{&lt;br /&gt;
  &amp;quot;main.test subscribe&amp;quot;: function(ev, publisherData){&lt;br /&gt;
    // TODO: do something&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;other.event subscribe&amp;quot;: function(ev, publisherData){&lt;br /&gt;
    // TODO: do something&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== View ==&lt;br /&gt;
JavaScriptMVC uses EJS templates to render HTML data in controllers and inject them into the [[Document Object Model|DOM]]. The syntax was inspired by [[ERuby]] and is similar to PHP or other server-side template engines.&lt;br /&gt;
&lt;br /&gt;
For example, file &amp;quot;test.ejs&amp;quot; ( data = [ &amp;quot;Hello&amp;quot;, &amp;quot;World&amp;quot; ] ):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;% for (var i=0, len = data.length; i &amp;lt; len; i++) { %&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;%= data[i] %&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;% } %&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following &amp;quot;output&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Hello&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;World&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Model ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JavaScriptMVC&amp;#039;s&amp;#039;&amp;#039;&amp;#039; model and it associated plugins provide lots of tools around organizing model data such as validations, associations, lists and more. But the core functionality is centered around service encapsulation, type conversion, and events.&amp;lt;ref&amp;gt;{{Cite web |title=JavaScriptMVC Overview |url=https://gist.github.com/jupiterjs/989117 |access-date=2022-07-15 |website=Gist |language=en}}&amp;lt;/ref&amp;gt; The Model class provides basic functionality to organize the application&amp;#039;s data layer.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$.Model(&amp;#039;Todo&amp;#039;, {&lt;br /&gt;
  findAll: &amp;#039;/todos&amp;#039;,&lt;br /&gt;
  findOne: &amp;#039;/todos/{id}&amp;#039;,&lt;br /&gt;
  create: &amp;#039;/todos&amp;#039;,&lt;br /&gt;
  update: &amp;#039;/todos/{id}&amp;#039;,&lt;br /&gt;
  destroy : &amp;#039;/todos/{id}&amp;#039;&lt;br /&gt;
},{});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JavaScriptMVC&amp;#039;&amp;#039;&amp;#039; also comes with a comprehensive test plug-in that supports classic unit tests for models, as well as functional tests, that are required to deal with event driven architectures. Tests can be run on the command line with Rhino, using Selenium and during development with the integrated test console pop-up window.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* {{Official website}}&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript libraries]]&lt;br /&gt;
[[Category:Ajax (programming)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{web-software-stub}}&lt;br /&gt;
{{compu-prog-stub}}&lt;br /&gt;
{{⚠️🚨COPIED from EverybodyWiki ❗❕⚠️😡😤Please respect Licence CC-BY-SA ❗}}&lt;br /&gt;
{{Source Wikipedia}}&lt;/div&gt;</summary>
		<author><name>WikiMasterBot2</name></author>
	</entry>
</feed>