WinJS.UI.Pages.define function

Creates a new PageControl from the specified Uniform Resource Identifier (URI) containing the specified members.
You can call this method multiple times for the same URI (all members are merged).
Syntax
var pageControl = WinJS.UI.Pages.define(uri, members);
Parameters
- uri
-
Type: String
The URI for the content that defines the page.
- members
-
Type: IPageControlMembers
An object that defines all members of the control.
Return value
Type: PageControl
A constructor function that creates the PageControl.
Examples
Here's a an example of a PageControl definition. It's made up of three files: an HTML file, a CSS file, and a JavaScript file.
<!-- samplePageControl.html --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>samplePageControl</title> <!-- WinJS references --> <link href="/pages/samplePageControl.css" rel="stylesheet"> <script src="/pages/samplePageControl.js"></script> </head> <body> <div class="samplePageControl"> <p class="samplePageControl-text"><span data-win-bind="textContent: controlText">Message goes here</span> <button class="samplePageControl-button">Click me</button></p> <p>Page controls can also contain Windows Library for JavaScript controls. They are activated automatically.</p> <div class="samplePageControl-toggle" data-win-control="WinJS.UI.ToggleSwitch"></div> </div> </body> </html>
/* samplePageControl.css */
.samplePageControl
{
padding: 5px;
border: 4px dashed #999999;
}
// samplePageControl.js (function () { "use strict"; var ControlConstructor = WinJS.UI.Pages.define("/pages/samplePageControl.html", { // This function is called after the page control contents // have been loaded, controls have been activated, and // the resulting elements have been parented to the DOM. ready: function (element, options) { options = options || {}; this._data = WinJS.Binding.as({ controlText: options.controlText, message: options.message }); // Data bind to the child tree to set the control text WinJS.Binding.processAll(element, this._data); // Hook up the click handler on our button WinJS.Utilities.query("button", element).listen("click", // JavaScript gotcha - use function.bind to make sure the this reference // inside the event callback points to the control object, not to // window this._onclick.bind(this)); // Windows Library for JavaScript controls can be manipulated via code in the page control too WinJS.Utilities.query(".samplePageControl-toggle", element).listen("change", this._ontoggle.bind(this)); }, // Getter/setter for the controlText property. controlText: { get: function () { return this._data.controlText; }, set: function (value) { this._data.controlText = value; } }, // Event handler that was wired up in the ready method _onclick: function (evt) { WinJS.log && WinJS.log(this._data.message + " button was clicked", "sample", "status"); }, // Event handler for when the toggle control switches _ontoggle: function (evt) { var toggleControl = evt.target.winControl; WinJS.log && WinJS.log(this._data.message + " toggle is now " + toggleControl.checked, "sample", "status"); } }); // The following lines expose this control constructor as a global. // This lets you use the control as a declarative control inside the // data-win-control attribute. WinJS.Namespace.define("Controls_PageControls", { SamplePageControl: ControlConstructor }); })();
Requirements
|
Minimum WinJS version |
WinJS 1.0 |
|---|---|
|
Namespace |
WinJS.UI.Pages |
See also
- For developers
- WinJS.UI.Pages Namespace
- Your first app - Part 3: PageControl objects and navigation
- Navigating between pages
- Quickstart: Using single-page navigation
- Quickstart: Adding Page controls
- Adding a Page control item template
- HTML Page controls sample
- Navigation and navigation history sample
- For designers
- Navigation patterns