diff --git a/reviewboard/static/rb/js/diffviewer/models/diffCommentBlockModel.es6.js b/reviewboard/static/rb/js/diffviewer/models/diffCommentBlockModel.es6.js
index 0e0818c4b9b7a31b09dc264e666c087e0021e0e5..0d0fcb8199e2749469b6799cbf96f07d30b69094 100644
--- a/reviewboard/static/rb/js/diffviewer/models/diffCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/diffviewer/models/diffCommentBlockModel.es6.js
@@ -3,6 +3,29 @@
  *
  * DiffCommentBlock deals with creating and representing comments that exist
  * in a specific line range of a diff.
+ *
+ * Model Attributes:
+ *     fileDiffID (number):
+ *         The ID of the FileDiff that this comment is on.
+ *
+ *     interFileDiffID (number):
+ *         The ID of the inter-FileDiff that this comment is on, if any.
+ *
+ *     beginLineNum (number):
+ *         The first line number in the file that this comment is on.
+ *
+ *     endLineNUm (number):
+ *         The last line number in the file that this comment is on.
+ *
+ *     $beginRow (jQuery):
+ *         The first row in the diffviewer that this comment is on.
+ *
+ *     $endRow (jQuery):
+ *         The last row in the diffviewer that this comment is on.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractCommentBlock`:
+ *         For the attributes defined by the base model.
  */
 RB.DiffCommentBlock = RB.AbstractCommentBlock.extend({
     defaults: _.defaults({
@@ -21,7 +44,7 @@ RB.DiffCommentBlock = RB.AbstractCommentBlock.extend({
      *     number:
      *     The number of lines spanned by this comment.
      */
-    getNumLines: function() {
+    getNumLines() {
         return this.get('endLineNum') + this.get('beginLineNum') + 1;
     },
 
@@ -36,7 +59,7 @@ RB.DiffCommentBlock = RB.AbstractCommentBlock.extend({
      *     RB.DiffComment:
      *     The new comment model.
      */
-    createComment: function(id) {
+    createComment(id) {
         return this.get('review').createDiffComment(
             id,
             this.get('fileDiffID'),
diff --git a/reviewboard/static/rb/js/diffviewer/models/diffReviewableModel.es6.js b/reviewboard/static/rb/js/diffviewer/models/diffReviewableModel.es6.js
index 97e45455272b1d1692a51707c77c616ffe0b074d..30bd7718fdb8cdb18abb94b25e0d64aae863b700 100644
--- a/reviewboard/static/rb/js/diffviewer/models/diffReviewableModel.es6.js
+++ b/reviewboard/static/rb/js/diffviewer/models/diffReviewableModel.es6.js
@@ -19,6 +19,10 @@
  *
  *     revision (number):
  *         The revision of the FileDiff.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractReviewable`:
+ *         For the attributes defined by the base model.
  */
 RB.DiffReviewable = RB.AbstractReviewable.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/abstractCommentBlockModel.es6.js b/reviewboard/static/rb/js/models/abstractCommentBlockModel.es6.js
index c4291704aee6c9c3eba6be7a80ba50abe5f1f2d2..c394bac8aade856398d2baf4dc2cba9b951258d8 100644
--- a/reviewboard/static/rb/js/models/abstractCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/models/abstractCommentBlockModel.es6.js
@@ -9,6 +9,28 @@
  *
  * The total number of comments in the block (including any draft comment)
  * will be stored, which may be useful for display.
+ *
+ * Model Attributes:
+ *     canDelete (boolean):
+ *         Whether or not the comment can be deleted.
+ *
+ *     count (number):
+ *         The total number of comments, including a draft comment.
+ *
+ *     draftComment (RB.BaseComment):
+ *         The draft comment that this block is associated with.
+ *
+ *     hasDraft (boolean):
+ *         Whether or not the review request has a draft.
+ *
+ *     review (RB.Review):
+ *         The review that the associated comment is a part of.
+ *
+ *     reviewRequest (RB.ReviewRequest):
+ *         The review request that this comment is on.
+ *
+ *     serializedComments (Array of object):
+ *         An array of serialized comments for display.
  */
 RB.AbstractCommentBlock = Backbone.Model.extend({
     defaults: {
diff --git a/reviewboard/static/rb/js/models/abstractReviewableModel.es6.js b/reviewboard/static/rb/js/models/abstractReviewableModel.es6.js
index 2b9ab1c86ee3e45b3570a68c625b1be3ec6650c7..63626697434bc18e36a518d0b733097ce4f02fc3 100644
--- a/reviewboard/static/rb/js/models/abstractReviewableModel.es6.js
+++ b/reviewboard/static/rb/js/models/abstractReviewableModel.es6.js
@@ -6,6 +6,23 @@
  *
  * All subclasses must provide a 'commentBlockModel' object type and an
  * loadSerializedCommentBlock() function.
+ *
+ * Model Attributes:
+ *     caption (string):
+ *         The caption of the reviewed object, if any.
+ *
+ *     renderedInline (boolean):
+ *         Whether or not the comment is rendered inline.
+ *
+ *     reviewRequest (RB.ReviewRequest):
+ *         The review request that the object being reviewed is associated
+ *         with.
+ *
+ *     review (RB.Review):
+ *         The current review that new comments will be added to.
+ *
+ *     serializedCommentBlocks (Array of object):
+ *         Serialized comment blocks.
  */
 RB.AbstractReviewable = Backbone.Model.extend({
     defaults: {
diff --git a/reviewboard/static/rb/js/models/fileAttachmentCommentBlockModel.es6.js b/reviewboard/static/rb/js/models/fileAttachmentCommentBlockModel.es6.js
index 08577fa32b661ce7a71334cfe8ed67985f8fcffe..03c3005a2c578d84296845315752307f0a90fbc1 100644
--- a/reviewboard/static/rb/js/models/fileAttachmentCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/models/fileAttachmentCommentBlockModel.es6.js
@@ -4,6 +4,17 @@
  * FileAttachmentCommentBlock deals with creating and representing comments
  * that exist on a file attachment. It's a base class that is meant to be
  * subclassed.
+ *
+ * Model Attributes:
+ *     fileAttachmentID (number):
+ *         The ID of the file attachment being commented upon.
+ *
+ *     diffAgainstFileAttachmentID (number):
+ *         An optional ID of the file attachment being diffed against.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractCommentBlock`:
+ *         For attributes defined on the base model.
  */
 RB.FileAttachmentCommentBlock = RB.AbstractCommentBlock.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/fileAttachmentReviewableModel.es6.js b/reviewboard/static/rb/js/models/fileAttachmentReviewableModel.es6.js
index 71bfedb1169f2f79b4946c537469a9c7b9e20b6d..cca5e68d913f32cd309e42aa55c6ff93e25c8ad0 100644
--- a/reviewboard/static/rb/js/models/fileAttachmentReviewableModel.es6.js
+++ b/reviewboard/static/rb/js/models/fileAttachmentReviewableModel.es6.js
@@ -1,10 +1,41 @@
 /**
  * Provides generic review capabilities for file attachments.
+ *
+ * Model Attributes:
+ *     attachmentRevisionIDs (Array of number):
+ *         The revisions of the file attachment.
+ *
+ *     diffAgainstFileAttachmentID (number):
+ *         The ID of the file attachment being diffed against.
+ *
+ *     diffCaption (string):
+ *         The caption of the attachment being diffed against.
+ *
+ *     diffRevision (number):
+ *         The revision of the attachment being diffed against.
+ *
+ *     diffTypeMismatch (boolean):
+ *         Whether the attachments being diffed have different review UI types.
+ *
+ *     fileAttachmentID (number):
+ *         The ID of the file attachment being reviewed.
+ *
+ *     fileRevision (number):
+ *         The revision of the file attachment being reviewed.
+ *
+ *     filename (string):
+ *         The name of the file being reviewed.
+ *
+ *     numRevision (number):
+ *         The total number of revisions for the given attachment.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractReviewable`:
+ *         For attributes defined on the base model.
  */
 RB.FileAttachmentReviewable = RB.AbstractReviewable.extend({
     defaults: _.defaults({
         attachmentRevisionIDs: null,
-        caption: '',
         diffAgainstFileAttachmentID: null,
         diffCaption: '',
         diffRevision: null,
diff --git a/reviewboard/static/rb/js/models/regionCommentBlockModel.es6.js b/reviewboard/static/rb/js/models/regionCommentBlockModel.es6.js
index 36590a221dc9785366f1b9d0523556dcb22efb81..9f9135a7dc6bffb5203e67d21b1d5bd3c8a68814 100644
--- a/reviewboard/static/rb/js/models/regionCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/models/regionCommentBlockModel.es6.js
@@ -3,6 +3,26 @@
  *
  * RegionCommentBlock deals with creating and representing comments
  * that exist in a specific region of some content.
+ *
+ * Model Attributes:
+ *     x (number):
+ *         The X position of the region being commented upon.
+ *
+ *     y (number):
+ *         The Y position of the region being commented upon.
+ *
+ *     width (number):
+ *         The width of the region being commented upon.
+ *
+ *     height (number):
+ *         The height of the region being commented upon.
+ *
+ * See Also:
+ *     :js:class:`RB.FileAttachmentCommentBlock`:
+ *         For attributes defined on the base model.
+ *
+ *     :js:class:`RB.AbstractCommentBlock`:
+ *         For attributes defined on all comment block models.
  */
 RB.RegionCommentBlock = RB.FileAttachmentCommentBlock.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/screenshotCommentBlockModel.es6.js b/reviewboard/static/rb/js/models/screenshotCommentBlockModel.es6.js
index 01695e3f0edb0cc8b30dda80ffaa54704cf3dc42..ae29cb92f41bf348ceefd49f957778ef0b26dc27 100644
--- a/reviewboard/static/rb/js/models/screenshotCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/models/screenshotCommentBlockModel.es6.js
@@ -3,6 +3,26 @@
  *
  * ScreenshotCommentBlock deals with creating and representing comments
  * that exist in a specific region of a screenshot.
+ *
+ * Model Attributes:
+ *     screenshotID (number):
+ *         The ID of the screenshot being commented upon.
+ *
+ *     x (number):
+ *         The X position of the region being commented upon.
+ *
+ *     y (number):
+ *         The Y position of the region being commented upon.
+ *
+ *     width (number):
+ *         The width of the region being commented upon.
+ *
+ *     height (number):
+ *         The height of the region being commented upon.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractCommentBlock`:
+ *         For attributes defined on the base model.
  */
 RB.ScreenshotCommentBlock = RB.AbstractCommentBlock.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/screenshotReviewableModel.es6.js b/reviewboard/static/rb/js/models/screenshotReviewableModel.es6.js
index 00511acaff29e3c542c20c2a63d353aa4a35094e..ce3a96cb8f60f4b1ce065975fdbe435ab059e264 100644
--- a/reviewboard/static/rb/js/models/screenshotReviewableModel.es6.js
+++ b/reviewboard/static/rb/js/models/screenshotReviewableModel.es6.js
@@ -1,5 +1,19 @@
 /**
  * Provides review capabilities for screenshots.
+ *
+ * Model Attributes:
+ *     caption (string):
+ *         The caption of the screenshot.
+ *
+ *     imageURL (string);
+ *         The URL of the image being reviewed.
+ *
+ *     screnshotID (number):
+ *         The ID of the screenshot being reviewed.
+ *
+ * See Also:
+ *     :js:class:`RB.AbstractReviewable`:
+ *         For the attributes defined by the base model.
  */
 RB.ScreenshotReviewable = RB.AbstractReviewable.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/textBasedCommentBlockModel.es6.js b/reviewboard/static/rb/js/models/textBasedCommentBlockModel.es6.js
index 04acf936cdf8735acf24b0fca088dda53ba3a3be..fcd6b51b807930e808c406aabf82492f9dc0e4c9 100644
--- a/reviewboard/static/rb/js/models/textBasedCommentBlockModel.es6.js
+++ b/reviewboard/static/rb/js/models/textBasedCommentBlockModel.es6.js
@@ -3,6 +3,35 @@
  *
  * TextCommentBlock deals with creating and representing comments
  * that exist on a specific element of some content.
+ *
+ * Model Attributes:
+ *     viewMode (string):
+ *         The mode of text that the comment is made upon. This is one of:
+ *
+ *         ``'source'``:
+ *             The raw contents of the file.
+ *
+ *         ``'rendered'``:
+ *             The rendered contents of the file, such as for Markdown, etc.
+ *
+ *     beginLineNum (number):
+ *         The first line number in the file that this comment is on.
+ *
+ *     endLineNUm (number):
+ *         The last line number in the file that this comment is on.
+ *
+ *     $beginRow (jQuery):
+ *         The first row in the diffviewer that this comment is on.
+ *
+ *     $endRow (jQuery):
+ *         The last row in the diffviewer that this comment is on.
+ *
+ * See Also:
+ *     :js:class:`RB.FileAttachmentCommentBlock`:
+ *         For the attributes defined by the base model.
+ *
+ *     :js:class:`RB.AbstractCommentBlock`:
+ *         For the attributes defined on all comment block.
  */
 RB.TextCommentBlock = RB.FileAttachmentCommentBlock.extend({
     defaults: _.defaults({
diff --git a/reviewboard/static/rb/js/models/textBasedReviewableModel.es6.js b/reviewboard/static/rb/js/models/textBasedReviewableModel.es6.js
index f0d17b9fe31a5cd28c24ac2d8cb297144e463813..7f3851cbafa29a009665e8cda74950f940fde27d 100644
--- a/reviewboard/static/rb/js/models/textBasedReviewableModel.es6.js
+++ b/reviewboard/static/rb/js/models/textBasedReviewableModel.es6.js
@@ -1,5 +1,19 @@
 /**
  * Provides generic review capabilities for text-based file attachments.
+ *
+ * Model Attributes:
+ *     viewMode (string):
+ *         The mode of text currently being displayed. This is one of:
+ *
+ *         ``'source'``:
+ *             The raw contents of the file.
+ *
+ *         ``'rendered'``:
+ *             The rendered contents of the file, such as for Markdown, etc.
+ *
+ *     hasRenderedView (boolean):
+ *         Whether or not the text has a rendered view, such as for Markdown,
+ *         etc.
  */
 RB.TextBasedReviewable = RB.FileAttachmentReviewable.extend({
     defaults: _.defaults({
