2017-06-09 10 views
0

私のプロジェクトでは、アプリケーションのすべてのモジュールに共通のデータオブジェクトを維持する必要があります。knockoutjs + requirejsでアプリのワイドデータを維持する方法

これは、すべてのREST APIとアプリのワイドデータを保存する場所です。 (Reduxの反応で店舗のようなもの)

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: '' 
     } 
    } 
}); 

私はloginlogoutサービスを呼び出すためにViewModelファイルにdataService.jsファイルを必要としています。

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

私はいくつかの他のViewModelにdataServiceを必要とするとき、私の問題は、dataService.user.isLoggedInの値がデフォルト値として設定されています。これをアプリのワイドデータとしてどのように保存できますか?

+1

私は実際にはわかりませんが、最初の 'App'を作成するdataServiceを呼び出すたびに新しいインスタンスを作成して、グローバル参照変数に格納して呼び出すことができるようにしています。 – Shadowfox

答えて

-1

モジュールごとに新しいオブジェクトをインスタンス化することがあります。

document.dataService = new dataService(); 

上記の方法を試してみてください。これはあなたの問題を解決するかもしれません。

関連する問題