2

なぜ$resource.factoryで使用する必要がありますか?なぜ.serviceが間違った方法ですか?

app.factory('Notes', ['$resource', function($resource) { 
return $resource('/notes/:id', null, 
    { 
     'update': { method:'PUT' } 
    }); 
}]); 

なぜ間違っていますか?

app.service('Notes', ['$resource', function($resource) { 
return $resource('/notes/:id', null, 
    { 
     'update': { method:'PUT' } 
    }); 
}]); 
+1

JavaScriptは「this」を初期化して戻すのではなく、コンストラクタ関数でオブジェクトを返すという奇妙な機能があるためです。実際にオブジェクトを構築するのではなく、代わりにオブジェクトを返すことを望むので、ファクトリが理にかなっています。 –

答えて

1

の両方がシングルトンですが、servicesnewキーワードを使用してインスタンス化されています。 $resourceの静的クラスメソッドにアクセスすることはできません。serviceを使用する場合は、アプリケーションによってはより良い場合があります。

言い換えれば、あなたは使用することはできません。

Notes.query({ ... }); 
Notes.create({ ... }); 

と他のクラスの機能変種。

note.$get() 
note.$save() 
note.$update() 
+0

これは正確には当てはまりません。これは最善の方法ではないかもしれませんが、 'Notes.prototype.constructor.query'を使って静的メソッドを取得することは可能です。 – estus

+0

OPはなぜそれが悪い習慣だったのか尋ねました - あなたの回避策はなぜ良い例なのですか? –

関連する問題