Angular.factoryでAlertFactoryを作成したいです。次のようなHTMLテンプレートを定義しました。
var template = "<h1>{{title}}</h1>";
タイトルはコントローラの呼び出しによって提供され、次のように適用されます。
var compiled = $compile(template)(scope);
body.append(compiled);
では、コントローラーからファクトリーに分離されたスコープを渡すにはどうすればよいのでしょうか?コントローラーで次のコードを使用しています
AlertFactory.open($scope);
しかし、$scope はグローバル コントローラー スコープ変数です。タイトル プロパティのみを持つファクトリーの小さなスコープを渡したいだけです。
ありがとう。
ベストアンサー1
新しいスコープを手動で作成できます。
注入する場合、またはコントローラー スコープからのみ新しいスコープを作成できます$rootScope
。これは分離されるため、問題にはなりません。
var alertScope = $scope.$new(true);
alertScope.title = 'Hello';
AlertFactory.open(alertScope);
ここで重要なのは、true
を に渡すことです$new
。 は の 1 つのパラメータを受け入れisolate
、親からスコープを継承することを回避します。
詳細については、以下をご覧ください。http://docs.angularjs.org/api/ng.$rootScope.Scope#$new