AppML β Controllers: Syntax & Use Cases Explained
Introduction β What Are AppML Controllers?
In AppML, a controller is a JavaScript file that adds logic and behavior to your model-view setup. While AppML focuses on HTML-based data binding, controllers handle filtering, validation, and user interactions, extending your appβs functionalityβwithout sacrificing simplicity.
In this guide, youβll learn:
- The role of AppML controllers in your application
- How to write and attach controller scripts
- Common use cases: filtering, sorting, form validation, and actions
- Syntax for key controller functions
What Is an AppML Controller?
An AppML controller is an external .js file attached to an HTML element using the appml-controller attribute. It accesses the model-view state through the global variable myAppML.
Example Syntax
<div appml-data="data/users.json" appml-controller="user-controller.js">
<h4>{{name}}</h4>
<p>{{email}}</p>
</div>
Controller File (user-controller.js)
myAppML.onshow = function() {
myAppML.filter = "email LIKE '*@example.com'";
};
βοΈ This filters data before it’s rendered, showing only users with “@example.com” emails.
Controller Lifecycle Functions
| Function | Description |
|---|---|
oninit | Runs before data is loaded |
onvalidate | Validates form data before submission |
onsubmit | Executes before data is posted (like save/update) |
onshow | Executes after data is loaded, before rendering |
onaftershow | Runs after data is shown on the screen |
Real Use Case Examples
1οΈβ£ Filtering Data by Role
myAppML.onshow = function() {
myAppML.filter = "role='Admin'";
};
This shows only admin users in your table or list view.
2οΈβ£ Sorting Data Alphabetically
myAppML.onshow = function() {
myAppML.sort = "name";
};
βοΈ Sorts users by name in ascending order.
3οΈβ£ Validating Form Inputs
myAppML.onvalidate = function() {
if (myAppML.data.name === "") {
alert("Name is required!");
return false;
}
return true;
};
Prevents form submission if the name field is empty.
4οΈβ£ Submitting with Confirmation
myAppML.onsubmit = function() {
return confirm("Do you want to save this record?");
};
βοΈ Adds a confirmation dialog before saving the record.
Full Controller Template
myAppML.oninit = function() {
// Run before data is loaded
};
myAppML.onshow = function() {
// Filter or sort logic
};
myAppML.onaftershow = function() {
// Add click handlers or UI tweaks
};
myAppML.onvalidate = function() {
// Return false to cancel form submission
};
myAppML.onsubmit = function() {
// Confirm action before submit
};
Folder Structure Best Practice
Organize your controllers like this:
/appml-app/
βββ controller/
β βββ user-controller.js
β βββ product-controller.js
Then attach using:
<div appml-controller="controller/user-controller.js">
Keeps your code modular and maintainable.
Summary β Recap & Key Takeaways
AppML controllers enhance your HTML-driven apps by allowing lightweight logic without JavaScript frameworks. You can filter data, validate input, sort results, and control form submissions using simple, readable functions.
Key Takeaways:
- AppML controllers extend logic into model-view HTML apps
- Use
appml-controller="file.js"to attach behavior - Lifecycle methods like
onshow,onvalidate, andonsubmitenable real interactivity - Keep logic files separate from HTML for modularity
- Ideal for dashboards, CRMs, and admin panels
Controllers turn static data rendering into dynamic, responsive applications.
FAQs β AppML Controller Syntax and Use Cases
Do I need a controller for every AppML view?
No. Use controllers only when you need filtering, validation, or custom logic.
Can one controller file be used for multiple elements?
Yes, if the logic is general-purpose and doesn’t rely on element-specific data.
What happens if a controller script fails to load?
The element will render without added logic. Check the browser console for errors.
Is myAppML available globally?
Yes, it is available inside your controller functions and scoped to the element using it.
Can I debug controllers with console.log()?
Absolutely. Use developer tools (F12) to inspect outputs and trace logic flow.
Share Now :
