Angularを使用してサーバーからJSONデータを取得する必要があります。ユーザーデータを考えてみましょう。私はそのようなサービスを作成しました:
app.service('User', function($http) {
retrun $http({method: 'GET', url:'/current_user'});
});
そして私のコントローラーでは:
app.controller('SomeCtrl', function($scope, User) {
User.success(function(data) {
$scope.user = data;
});
});
これは問題なく機能しますが、ユーザーにいくつかのメソッドを追加したい場合はどうすればよいですか?たとえば、ビューで私がやりたいと思います{{user.isAdmin()}}
。それは正しいアプローチですか?これらのメソッドはどこに追加できますか?
サービスが常にこのメソッドでオブジェクトを返すようにしたい場合は、次のようにします。
app.service('User', function($http) {
return $http({method: 'GET', url:'/current_user'}).
then(function(response) {
response.data.isAdmin = function() { return true; };
return response.data;
});
});
これで、このpromiseを参照し、.then()を使用する将来のコードは、新しいオブジェクトを取得します。詳細については、promiseのドキュメントをご覧ください。
http://docs.angularjs.org/api/ng。$ Q
httpPromiseで「then」を使用すると、通常のPromiseに変換されることに注意してください。便利なメソッド「success」と「error」はもうありません。
データオブジェクトを受け取り、適切なプロパティを割り当てる(またはインスタンスを拡張する)コンストラクター関数を使用して、返すオブジェクトのクラスを作成することをお勧めします。このようにして、次のようなことを簡単に行うことができます
return new User(val);
そして、あなたはあなたが望むすべての方法を手に入れるでしょう(プロトタイプなどで)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加