Provide easy way to override views in JS application

This commit is contained in:
Dmitriy Simushev 2014-12-18 14:42:11 +00:00
parent 210e82e798
commit 964e917f4a
7 changed files with 128 additions and 58 deletions

View File

@ -24,17 +24,25 @@
Mibew.Views.MessagesCollection = Mibew.Views.CollectionBase.extend(
/** @lends Mibew.Views.MessagesCollection.prototype */
{
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Message,
/**
* Class name for view's DOM element
* @type String
*/
className: 'messages-collection'
className: 'messages-collection',
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Message;
}
}
);

View File

@ -24,17 +24,25 @@
Mibew.Views.StatusCollection = Mibew.Views.CollectionBase.extend(
/** @lends Mibew.Views.StatusCollection.prototype */
{
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Status,
/**
* Class name for view's DOM element
* @type String
*/
className: 'status-collection'
className: 'status-collection',
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Status;
}
}
);

View File

@ -24,17 +24,25 @@
Mibew.Views.ControlsCollection = Mibew.Views.CollectionBase.extend(
/** @lends Mibew.Views.ControlsCollection.prototype */
{
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Control,
/**
* Class name for view's DOM element
* @type String
*/
className: 'controls-collection'
className: 'controls-collection',
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Control;
}
}
);

View File

@ -24,17 +24,25 @@
Mibew.Views.MessagesCollection = Mibew.Views.CollectionBase.extend(
/** @lends Mibew.Views.MessagesCollection.prototype */
{
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Message,
/**
* Class name for view's DOM element
* @type String
*/
className: 'messages-collection'
className: 'messages-collection',
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Message;
}
}
);

View File

@ -24,12 +24,6 @@
Mibew.Views.AgentsCollection = Mibew.Views.CollectionBase.extend(
/** @lends Mibew.Views.AgentsCollection.prototype */
{
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Agent,
/**
* Class name for view's DOM element
* @type String
@ -44,6 +38,20 @@
'sort add remove reset': 'render'
},
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Agent;
},
/**
* View initializer
*/

View File

@ -26,24 +26,12 @@
{
template: Handlebars.templates['users/threads_collection'],
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.QueuedThread,
/**
* DOM element for collection items
* @type String
*/
childViewContainer: '#threads-container',
/**
* Empty view constructor.
* @type Function
*/
emptyView: Mibew.Views.NoThreads,
/**
* Class name for view's DOM element
* @type String
@ -60,6 +48,33 @@
'add': 'threadAdded'
},
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.QueuedThread;
},
/**
* Returns empty view constructor.
*
* The function is used instead of "emptyView" property to provide
* an ability to override empty view constructor without this class
* overriding.
*
* @returns {Backbone.Marionette.ItemView}
*/
getEmptyView: function() {
return Mibew.Views.NoThreads;
},
/**
* Pass some options to item view
* @returns {Object} Options object

View File

@ -26,24 +26,12 @@
{
template: Handlebars.templates['users/visitors_collection'],
/**
* Default item view constructor.
* @type Function
*/
childView: Mibew.Views.Visitor,
/**
* DOM element for collection items
* @type String
*/
childViewContainer: '#visitors-container',
/**
* Empty view constructor.
* @type Function
*/
emptyView: Mibew.Views.NoVisitors,
/**
* Class name for view's DOM element
* @type String
@ -58,6 +46,33 @@
'sort': 'render'
},
/**
* Returns default child view constructor.
*
* The function is used instead of "childView" property to provide
* an ability to override child view constructor without this class
* overriding.
*
* @param {Backbone.Model} model The model the view created for.
* @returns {Backbone.Marionette.ItemView}
*/
getChildView: function(model) {
return Mibew.Views.Visitor;
},
/**
* Returns empty view constructor.
*
* The function is used instead of "emptyView" property to provide
* an ability to override empty view constructor without this class
* overriding.
*
* @returns {Backbone.Marionette.ItemView}
*/
getEmptyView: function() {
return Mibew.Views.NoVisitors;
},
/**
* Pass some options to item view
* @returns {Object} Options object