2017-06-09 30 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(); 

尝试使用上述方法。这可能会解决您的问题。

相关问题