2016-06-21 5 views
0

私の共有データをコントローラ間で同期させた状態に保つための "モデル"サービスを開発しようとしています。 私はこの解決策になってしまった:AngularJSモデルサービスコードを整理する

myApp.factory('UserService', function() { 
    return { 
    data: { 
     user: { 
     vm: { 
      firstName: '', 
      lastName: '' 
     }, 
     save: function() { 
      console.log("save user"); 
     } 
     }, 
     settings: { 
     vm: { 
      theme: '', 
      language: '', 
      currency: '' 
     }, 
     save: function() { 
      console.log("save user settings"); 
     } 
     }, 
     save: function() { 
     console.log("save all"); 
     } 
    } 
    }; 
}); 

(より良い、それがどのように機能するかを理解するためにここにフィドル:http://jsfiddle.net/n36kpuf6/)。

私はそれが悪い解決策ではないと思っています。私のHTMLをきれいに保ちます。そして、コントローラでどのような機能を使用できるかを一目瞭然に見ることができます。私はイベントや$スコープに基づいてデータ共有の他のソリューションの中でそれを好む...

同時に、私は多分それは少し混乱していると思っています。だから私はJohn Papaのスタイルガイドを調べて、どのように整理して整理しているのか見ていましたが、このような "モデル"サービスについての例は見つけられず、メソッドに基づく単純なサービス...ということになりました何か。

このサービスをより整理しやすくする方法についてアドバイスをいただけますか?

+0

*「おそらく、ちょっと混乱している」* ...なぜですか?コントローラはリーンでなければならず、サービスにはできる限り多くのビジネスロジックが必要です。 – charlietfl

+0

まあ、私は同じ構造のモデルと関数を持っています。私の関数が "実"コードで満たされていれば、それらは長くなり、全体の構造はあまり読みにくくなります。 – wizzy

+1

名前付き関数の関数をオブジェクトの下に記述し、関数参照を 'data'オブジェクトに渡すだけです – charlietfl

答えて

0

なぜオブジェクトをオブジェクトの内部に配置しますか?私はこの解決策になってしまった

myApp.factory('UserService', function() { 
    return { 
    data: { 
     user: { 
      firstName: '', 
      lastName: '' 
     }, 
     settings: { 
      theme: '', 
      language: '', 
      currency: '' 
     } 
    } 
    }; 
}); 
+0

私はコントローラでサービスを継承するたびに、モデル自体とその機能を利用できるようになるためです。たとえば、 ...ユーザーデータとその関数を取得してバックエンドに保存します。 – wizzy

0

:なぜあなただ​​けのきれいなオブジェクトを取得していない

myApp.factory('UserService', function() { 
    var service = { 
     user: { 
     vm: {}, 
     save: saveUser 
     }, 
     settings: { 
     vm: {}, 
     save: saveSettings 
     }, 
     save: saveAll 
    }; 

    return service; 

    function saveUser() { 
    console.log("save user"); 
    console.log(service.user.vm); 
    } 

    function saveSettings() { 
    console.log("save user settings"); 
    console.log(service.settings.vm); 
    } 

    function saveAll() { 
    console.log("save all"); 
    console.log(service); 
    } 
}); 

(ここではフィドル:http://jsfiddle.net/tudev0xc/

私はそれは汎用性と読めるのままだと思います。

関連する問題