2016-02-25 32 views
0

我有一個網頁的作品以下罰款,但我想使它可用於2個頁面:顯露的模塊模式模板

var dynamicPropertyOverviewController = (function(){ 

    var currentPage = $('#dynamicPropertyOverview'); 

    function init(){ 
     if(checkMobileAndTabletVisibility.isTabletView()){ 
      if(dynamicPropertyController.isDynamicPropertyOverviewWithAvailability(currentPage)){ 
       dynamicPropertyController.addSearchModalMobileTrigger(); 
       if(dynamicPropertyController.isSearchBarNotHidden()){ 
        dynamicPropertyController.hideSearchBarDisplayPill(currentPage); 
       } 
      } 
     } 
     else{ 
      dynamicPropertyController.addSearchBarDesktopTrigger(); 
     } 
    } 

    return{ 
     init: init 
    } 

})(); 

「當前頁」變種將決定這個初始化將被應用。

這僅僅是擁有所有這些功能都來自一個更好的主意:

var dynamicPropertyController = (function() { 

     var searchBarModalTrigger = 'js-open-mobile-search'; 

     function isDynamicPropertyOverviewWithAvailability(page){ 
      return page.length && !$('.property-not-available').length; 
     } 

     function hideSearchBarDisplayPill(page){ 
      page.addClass('hide-search-form'); 
     $('.check-prices').addClass('display-pill');  
    } 

    function addSearchModalMobileTrigger(){ 
     $('.edit-search-link').removeClass('display-searchBar').addClass(searchBarModalTrigger); 
    } 

我怎樣才能讓

function addSearchBarDesktopTrigger(){ 
     $('.edit-search-link').removeClass(searchBarModalTrigger).addClass('display-searchBar'); 
    } 

    function isSearchBarNotHidden(){ 
     return !$('.hide-search-form').length; 
    } 

    return { 
     isDynamicPropertyOverviewWithAvailability: isDynamicPropertyOverviewWithAvailability, 
     hideSearchBarDisplayPill: hideSearchBarDisplayPill, 
     addSearchModalMobileTrigger: addSearchModalMobileTrigger, 
     addSearchBarDesktopTrigger: addSearchBarDesktopTrigger, 
     isSearchBarNotHidden: isSearchBarNotHidden 
    } 

})(); 

我怎樣才能讓「dynamicPropertyOverviewController」,這樣我就可以傳遞一個變量並將其用於3個不同的頁面?

+0

不要任何頁面使它成爲一個模塊,但是一個工廠? – Bergi

回答

0

以下模式允許你使用暴露VAR翻過diferent模塊:

window.App = {}; 
window.App.sharedVariable = "Same value"; 
(function (App) { 
    console.log("I can read App.sharedVariable", App.sharedVariable); 

}(window.App)); 

(function (App) { 
    console.log("I can read App.sharedVariable too!", App.sharedVariable); 
}(window.App)); 

(function (App) { 
    App.sharedVariable = "Changed the value!" 
}(window.App)); 

(function (App) { 
    console.log("he did changed App.sharedVariable", App.sharedVariable); 
    console.log("you can even have custom event listeners and trigger it when the variable is changed and stuff, neat hun ?"); 
}(window.App)); 

我已經把它很基本的,簡單的,讓你隨處運用這些知識!這可能是有用的,你不需要費力去理解它,並且非常適合你目前的問題!

您可以在這裏找到工作的例子:http://codepen.io/anon/pen/JXPOZg?editors=1111

0

我發現東西,可以爲我工作:

function CarPartFactory() {} 
CarPartFactory.prototype.createPart = function createCarPart(options) { 
    console.log(options + ' options'); 
} 

var seat = new CarPartFactory(); 

// outputs a CarSeat object with material "leather", color "blue", isReclinable "false" 
seat.createPart('page'); 

喜歡我可以通過我喜歡