私は、このHTMLました:AngularJSは、サービスを利用するこの方法ですか?
<p>Hello {{name}}</p>
をし、コントローラは次のようになります。この場合、結果には
function myCtrl(scope, service) {
scope.name = service.getUsername(); // service.getUsername() return "World!"
}
myCtrl.$inject = ['$scope', 'originalService'];
サービスが正常に動作しますので、私はここにコードを貼り付けていない... 私は、このようにHTMLを変更し、 "こんにちは、世界!" です :
<p>Hello {{service.getUsername()}}</p>
しかし、これはうまくいかない。
私は、コントローラ変更:
function myCtrl(scope, service) {
scope.ser = service;
}
myCtrl.$inject = ['$scope', 'originalService'];
をして、HTML
<p>Hello {{ser.getUsername();}}</p>
は、これは動作します!
だから私の質問は次のとおりです。
が、これはHTMLで直接サービスの機能を使用するための唯一の方法である、または私は何かが欠けていますか?
私はそれがいくつかのタイプのビューサービスではなく、あなたのテンプレートがseriveのすべての機能を必要とするなら、スコープにサービスオブジェクト全体を追加することを避けるでしょう。一般的には、テンプレートに必要な範囲にデータ/関数を追加するだけです。 –
@AndersEkdahl私は同意します。おそらく、あなたはこのメソッドを非常に頻繁に使いたくないでしょう。しかし、私はすべてがサービスに依存していると思います。私は単にここにオプションを提示するだけで、考慮すべき異なるトレードオフがあります。 –
@ pkozlowski.opensource答えが – Bruno