2017-06-09 31 views
0

在我的項目中,我需要爲應用程序中的所有模塊維護一個公共數據對象。如何在knockoutjs + requirejs中維護應用程序的寬數據

這是我存儲所有REST API和應用程序寬數據的地方。 (如在商店購物的反應終極版)

dataService.js

define(['jquery', 'app'], function($, app) { 


    var url = app.serviceURL; 

    function loginUser(data) { 
     data.type = "login"; 
     return $.ajax({ 
      url: url + '/authentication.php', 
      data: data, 
      method: "POST" 
     }); 
    }; 

    function logoutUser(data) { 
     data.type = "logout"; 
     return $.ajax({ 
      url: url + '/authentication.php', 
      data: data, 
      method: "POST" 
     }); 
    }; 

    return { 
     actions: { 
      loginUser: loginUser, 
      logoutUser: logoutUser 
     }, 
     user: { 
      isLoggedIn: '' 
     } 
    } 
}); 

我需要dataService.js文件中ViewModel文件調用loginlogout服務。

dataService.actions.loginUser(data) 
       .then(function(data) { 
        dataService.user.isLoggedIn = true; // I changed the app wide data here      
    } 
       }); 

我的問題是,當我需要一些其他視圖模型的dataServicedataService.user.isLoggedIn值被設置爲默認值。我怎樣才能保存這個應用程序的數據?

+1

我不太確定,但是在我看來,您每次調用dataService時都會創建一個新實例,您可以在其中創建初始'App',將其存儲在全局引用變量中,以便可以調用該實例。 – Shadowfox

回答

-1

它可能正在爲每個模塊實例化一個新的對象。您可以通過執行以下操作創建全局變量:

document.dataService = new dataService(); 

嘗試使用上述方法。這可能會解決您的問題。

相關問題