},\r
\r
addTab: function(title, slug, content) {\r
- if(this.contents[slug])\r
- return false;\r
+ if(this.contents[slug]) {\r
+ this.contents[slug].detach();\r
+ }\r
this.contents[slug] = content;\r
\r
var text = (typeof title === 'string') ? title : (title.text || '');\r
var icon = title.icon || null;\r
\r
- this.nodes.tabBar.append(this.handleTemplate({text: text, icon: icon, slug: slug}));\r
+ if(!this.tabExists(slug))\r
+ this.nodes.tabBar.append(this.handleTemplate({text: text, icon: icon, slug: slug}));\r
if(!this.selectedTab)\r
this.selectTab(slug);\r
},\r
if(slug !== this.selectedTab && this.contents[slug]) {\r
this.trigger('leaving', this.selectedTab);\r
\r
- if(this.selectedTab)\r
- this.contents[this.selectedTab].detach();\r
+ if(this.selectedTab) {\r
+ var toDetach = this.contents[this.selectedTab];\r
+ if(toDetach.onHide)\r
+ toDetach.onHide();\r
+ toDetach.detach();\r
+ }\r
this.nodes.content.append(this.contents[slug]);\r
+ if(this.contents[slug].onShow) {\r
+ this.contents[slug].onShow();\r
+ }\r
this.nodes.tabBar.find('.active').removeClass('active');\r
this.nodes.tabBar.find('a[href="#'+slug+'"]').parent().addClass('active');\r
\r
return this.selectedTab;\r
},\r
\r
+ tabExists: function(slug) {\r
+ return this.nodes.tabBar.find('a[href="#'+ slug + '"]').length > 0;\r
+ },\r
+ \r
/* Events */\r
\r
_onTabTitleClicked: function(e) {\r