From 89372bf040645d27cd94cd47013578ce8f5b6f3c Mon Sep 17 00:00:00 2001 From: Makis Tracend Date: Fri, 18 Sep 2015 04:12:34 -0700 Subject: [PATCH] #68 :star: standardizing model for storing states --- lib/app.view.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/app.view.js b/lib/app.view.js index ea0a3a1..adda035 100755 --- a/lib/app.view.js +++ b/lib/app.view.js @@ -1,4 +1,12 @@ (function(_, Backbone, $, APP) { + // containers + var state = Backbone.View.prototype.state || new Backbone.Model(); + // defaults + state.set({ + loaded : false, + scroll : false, + visible : false + }); APP.View = Backbone.View.extend({ options : { @@ -23,11 +31,9 @@ states: { "scroll": "_scroll" }, - state: { - loaded : false, - scroll : false, - visible : false - }, + + state: state, + initialize: function( options ){ var self = this; // fallback @@ -224,7 +230,7 @@ if( !this.options.data || (this.options.data && !_.isEmpty(this._toJSON()) ) ){ $(this.el).removeClass("loading"); // set the appropriate flag - this.state.loaded = true; + this.state.set("loaded", true); // bubble up the event this.trigger("loaded"); } @@ -306,7 +312,7 @@ // _scroll: function () { - //this.state.scroll = true; + //this.state.set("scroll", true); }, // checks if the view is visible isVisible: function(){ @@ -327,13 +333,13 @@ // condition var visible = ( (elementOffset.top >= minTop && elementOffset.top < maxTop) && (elementOffset.left >= minLeft && elementOffset.left < maxLeft) ); // trigger state if needed - if( visible && !this.state.visible ){ + if( visible && !this.state.get("visible") ){ this.trigger("visible"); } else { this.trigger("hidden"); } // save state for later... - this.state.visible = visible; + this.state.set("visible", visible); return visible; }