StructureJS
0.15.2A class based utility library for building modular and scalable web platform applications. Features opt-in classes and utilities which provide a solid foundation and toolset to build your next project.
The Collection class provides a way for you to manage your models.
_listeners
Any
protected
Holds a reference to added listeners.
_modelType
Any
protected
A reference to a BaseModel type that will be used in the collection.
isEnabled
Boolean
public
The isEnabled property is used to keep track of the enabled state of the object.
Default: false
length
Int
public
The count of how many models are in the collection.
Default: 0
models
Array.The list of models in the collection.
parent
Any
public
Indicates the object that contains a child object. Uses the parent property to specify a relative path to display objects that are above the current display object in the display list hierarchy and helps facilitate event bubbling.
sjsId
Int
public
The sjsId (StructureJS ID) is a unique identifier automatically assigned to most StructureJS objects upon instantiation.
Default: null
Collection
baseModelType
baseModelType
BaseModel
Pass a class that extends BaseModel and the data added to the collection will be created as that type.
let data = [{ make: 'Tesla', model: 'Model S', year: 2014 }, { make: 'Tesla', model: 'Model X', year: 2016 }];
// Example of adding data to a collection
let collection = new Collection();
collection.add(data);
// Example of adding data to a collection that will create a CarModel model for each data object passed in.
let collection = new Collection(CarModel);
collection.add(data);
_findPropertyValue
arg
_where
propList
add
model
[silent=false]
Adds model or an array of models to the collection.
collection.add(model);
collection.add([model, model, model, model]);
collection.add(model, true);
addEventListener
type
callback
scope
[priority=0]
Registers an event listener object with an EventDispatcher object so the listener receives notification of an event.
type
String
The type of event.
callback
Function
The listener function that processes the event. This function must accept an Event object as its only parameter and must return nothing, as this example shows. @example function(event:Event):void
scope
Any
Binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in JavaScript because scope isn't generally maintained.
[priority=0]
Int
optional
Influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
this.addEventListener(BaseEvent.CHANGE, this._handlerMethod, this);
_handlerMethod(event) {
console.log(event.target + " sent the event.");
console.log(event.type, event.data);
}
addEventListenerOnce
type
callback
scope
[priority=0]
Registers an event listener object once with an EventDispatcher object so the listener will receive the notification of an event.
type
String
The type of event.
callback
Function
The listener function that processes the event. This function must accept an Event object as its only parameter and must return nothing, as this example shows. @example function(event:Event):void
scope
Any
Binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in JavaScript because scope isn't generally maintained.
[priority=0]
Int
optional
Influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
this.addEventListenerOnce(BaseEvent.CHANGE, this._handlerMethod, this);
_handlerMethod(event) {
console.log(event.target + " sent the event.");
console.log(event.type, event.data);
}
clear
[silent=false]
Clears or remove all the models from the collection.
[silent=false]
Boolean
optional
If you'd like to prevent the event from being dispatched.
collection.clear();
clone
()
Collection
public
Creates and returns a new collection object that contains a reference to the models in the collection cloned from.
let clone = collection.clone();
destroy
()
Void
public
The purpose of the destroy method is to make an object ready for garbage collection. This should be thought of as a one way function. Once destroy is called no further methods should be called on the object or properties accessed. It is the responsibility of those who implement this function to stop all running Timers, all running Sounds, and take any other steps necessary to make an object eligible for garbage collection.
By default the destroy method will null out all properties of the class automatically. You should call destroy on other objects before calling the super.
destroy() {
this.disable();
this._childInstance.destroy();
super.destroy();
}
disable
()
public
chainable
The disable method is responsible for disabling event listeners and/or children of the containing objects.
disable() {
if (this.isEnabled === false) { return; }
this._childInstance.removeEventListener(BaseEvent.CHANGE, this.handlerMethod, this);
this._childInstance.disable();
super.disable();
}
dispatchEvent
event
[data=null]
Dispatches an event into the event flow. The event target is the EventDispatcher object upon which the dispatchEvent() method is called.
event
String | BaseEvent
The Event object or event type string you want to dispatch. You can create custom events, the only requirement is all events must extend BaseEvent.
[data=null]
Any
optional
The optional data you want to send with the event. Do not use this parameter if you are passing in a BaseEvent.
this.dispatchEvent('change');
// Example: Sending data with the event:
this.dispatchEvent('change', {some: 'data'});
// Example: With an event object
// (event type, bubbling set to true, cancelable set to true and passing data) :
let event = new BaseEvent(BaseEvent.CHANGE, true, true, {some: 'data'});
this.dispatchEvent(event);
// Here is a common inline event object being dispatched:
this.dispatchEvent(new BaseEvent(BaseEvent.CHANGE));
enable
()
public
chainable
The enable method is responsible for enabling event listeners and/or children of the containing objects.
enable() {
if (this.isEnabled === true) { return; }
this._childInstance.addEventListener(BaseEvent.CHANGE, this.handlerMethod, this);
this._childInstance.enable();
super.enable();
}
filter
callback
[callbackScope=null]
The filter method creates a new array with all elements that pass the test implemented by the provided function.
Returns the list of models in the collection.
let isOldEnough = function(model){
return model.age >= 21;
}
let list = collection.filter(isOldEnough);
findBy
arg
Examines each element in a collection, returning an array of all elements that have the given properties. When checking properties, this method performs a deep comparison between values to determine if they are equivalent to each other.
Returns a list of found object's.
// Finds all Base Model that has 'Robert' in it.
collection.findBy("Robert");
// Finds any Base Model that has 'Robert' or 'Heater' or 23 in it.
collection.findBy(["Robert", "Heather", 32]);
// Finds all Base Models that same key and value you are searching for.
collection.findBy({ name: 'apple', organic: false, type: 'fruit' });
collection.findBy([{ type: 'vegetable' }, { name: 'apple', 'organic: false, type': 'fruit' }]);
fromJSON
json
get
index
Finds an object by an index value.
index
Int
The index integer of the model to get
the model
let model = collection.get(1);
getEventListeners
()
ArrayReturns and array of all current event types and there current listeners.
this.getEventListeners();
getQualifiedClassName
()
String
public
Returns the fully qualified class name of an object.
Returns the class name.
let someClass = new SomeClass();
someClass.getQualifiedClassName();
// SomeClass
groupBy
propertyName
Convenient way to group models into categories/groups by a property name.
propertyName
String
The string value of the property you want to group with.
Returns an object that is categorized by the property name.
collection.add([{name: 'Robert', id: 0}, {name: 'Robert', id: 1}, {name: 'Chris', id: 2}]);
let list = collection.groupBy('name');
// {
// Robert: [{name: 'Robert', id: 0}, {name: 'Robert', id: 1}]
// Chris: [{name: 'Chris', id: 2}]
// }
has
model
hasEventListener
type
callback
scope
indexOf
model
Returns the array index position of the Base Model.
model
Object
get the index of.
collection.indexOf(model);
pluck
propertyName
[unique=false]
Convenient way to get a list of property values.
collection.add([{name: 'Robert'}, {name: 'Robert'}, {name: 'Chris'}]);
let list = collection.pluck('name');
// ['Robert', 'Robert', 'Chris']
let list = collection.pluck('name', true);
// ['Robert', 'Chris']
print
()
String
public
Prints out each event listener in the console.log
this.printEventListeners();
// [ClassName] is listening for the 'BaseEvent.change' event.
// [AnotherClassName] is listening for the 'BaseEvent.refresh' event.
remove
model
[silent=false]
Removes a model or an array of models from the collection.
collection.remove(model);
collection.remove([model, model, model, model]);
collection.remove(model, true);
removeEventListener
type
callback
scope
reverse
()
Array.Changes the order of the models so that the last model becomes the first model, the penultimate model becomes the second, and so on.
Returns the list of models in the collection.
collection.reverse();
sort
[sortFunction=null]
Specifies a function that defines the sort order. If omitted, the array is sorted according to each character's Unicode code point value, according to the string conversion of each element.
[sortFunction=null]
Function
optional
Returns the list of models in the collection.
let sortByDate = function(a, b){
return new Date(a.date) - new Date(b.date)
}
collection.sort(sortByDate);
sortOn
propertyName
[sortAscending=true]
Allows you to sort models that have one or more common properties, specifying the property or properties to use as the sort keys
Returns the list of models in the collection.
collection.sortOn('name');
collection.sortOn('name', false);
toJSON
()
Array.Creates a JSON object of the collection.
let arrayOfObjects = collection.toJSON();