AngularJS - プログラムで新しい分離されたスコープを作成するにはどうすればいいですか? 質問する

AngularJS - プログラムで新しい分離されたスコープを作成するにはどうすればいいですか? 質問する

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.$ro​​otScope.Scope#$new

おすすめ記事