私はAngularJSを初めて使用しており、以前はWPF MVVMの経験があります。さて、私は$ scopeと非常に混同しています。それはビューモデルのように見えます。関数を定義し、ng-change、ng-clickなどの角度指示を使って関数を接続することができます。しかし、その関数がUIに関連していない場合は、$ scopeにもそれらを添付しなければなりませんか? $ scopeでどのような関数を定義する必要がありますか?また、実際の実装をカプセル化するためにサービスを使用し、$ scopeのメソッドでサービスを呼び出すことを提案する記事をいくつか読んでいます。これは、http呼び出しをデカップリングすることができます。しかし、私はそれがあまりにも多くのサービスを作成し、サービスのいくつかは再利用されないと思う。何か案は?
0
A
答えて
1
$ scope。$ scope。$ eval()または$ scope($)を使用して使用できるメソッドとフィールドをバインドします$ apply()補間を使用するときに暗黙的に使用するメソッド{{itIsInterpolation}}またはng-あなたのhtmlコードのプレフィックス属性)。 メソッドは、HTMLレイヤーから呼び出すことができます。
しかし、MVCイデオロギーでは、サービス層に何らかの論理的なアクションを実行してから、何らかの結果を返す(レンダリングして$スコープに入れる)ようにコントローラを使用します。ここでも同じ。たとえば、次のように
angular
.module('myApp', [])
.factory('ItemService', ItemService)
.controller('ItemController', ItemController);
function ItemService($http) {
return {
getAllItemCost: getAllItemCost
};
function getAllItemCost() {
return $http.get('api/items)
.then(function (response) {
var items = response.data;
return items.map(item => item.price).reduce((a, b) => a + b);
});
}
}
function ItemController(ItemService) {
$scope.itemsCost = 0;
$scope.updateItemsCost = function() {
ItemService.getAllItemCost()
.then(function (cost) {
$scope.itemsCost = cost;
});
}
}
1
サービスと工場を使用することは、コードを分離する場合には常に良いアイデアです。 2つのサービスが2つあると心配しないでください。 以下の操作を行うことができます。
1-残りのコールを処理するサービスを作成します。休憩の際には、このサービスが使用されます。このサービスは、データ、URL、メソッドなどの共通の入力を受け取り、アプリ全体のすべてのコントローラとサービスに共通して使用されます。
2ユーティリティ目的で工場を作成します。いくつかの計算を行い、コントローラに適切なデータを返すことができます
3-グローバル変数を格納するための定数を使用して、そのような変数への変更を1か所で行うことができます。
4-一部のサービスはカスタムディレクティブに固有のもので、他の目的には使用されません。
5-スコープには、htmlでアクセスできる関数を含めることができます。他の機能は、そのコントローラに専用にすることができます。
関連する問題
- 1. 反応とバーベルにはどのようなものを取り付けるべきですか?
- 2. $ scope以外にどのようなローカルをコントローラに注入できますか?
- 3. どのように条件付きでphpでメソッドをチェーンできますか?
- 4. $ scopeをHTMLでアクセスできないようにするサービス
- 5. 黒に透明でないすべてのピクセルをどのように色付けするのですか?
- 6. Scope - Rails 4との関連付けによるユーザーリストのオーダー
- 7. C#プログラムのmainメソッドにラムダ式を付けるとどうなりますか?
- 8. OMNet ++でどのようにサイズを見つけるべきですか?
- 9. myCustomDictionary.Valuesはどのような型を返すべきですか?
- 10. どのような順序で私の頂点をかけるためにOpenGLに送るべきですか
- 11. 「警告」とラベル付けされた正規表現機能をどのように扱うべきですか?
- 12. Rails 2.3 - すべてのURLの末尾にスラッシュ「/」を付けるにはどうすればよいですか?
- 13. ダムコンポーネントはどのようにダムにするべきですか?
- 14. #!/ usr/bin/php行にはどのような有用な引数を付けることができますか?
- 15. チェンジセットはどの作業項目に関連付けるべきですか?
- 16. Rubyオブジェクトのメソッドを調べるにはどうすればよいですか?
- 17. アンドロイドで現在の日をどのように色付けできますか?
- 18. Railsアプリケーションでどのフィールドにインデックスを付けるべきですか?
- 19. RESTでGETメソッドとDELETEメソッドの応答はどのようにすべきですか?
- 20. 「To-Do」にはどのように印を付けてラベルを付けるのですか?
- 21. リフレッシュレートを表示するために結び付けるべきではない加速をどのように処理するのですか?
- 22. savefigにはどのような形式のパスを使うべきですか?
- 23. コメント内にないメソッド名はどのようにして見つけることができますか?
- 24. コンポーネントにテキストをどのように色付けできますか?
- 25. マージコミットの親の番号付けを調べるにはどうすればよいですか?
- 26. タスクが条件付きで実行される場合、非同期メソッドはどうすべきですか?
- 27. spring.netはどのようにメソッドに挿入できますか?
- 28. graphNELグラフのノードをどのように色付けできますか?
- 29. なぜ私はIfステートメントに名前を付けるべきですか?
- 30. スマートポインタはどのようにキャストダウンされるべきですか?