controller as
構文を使用するように私のコードを隠そうとしていました。なぜ 'controller as'は子コントローラから親スコープのプロパティに直接アクセスできないのですか?
// <div ng-controller="ParentCtrl">
// <div ng-controller="ChildCtrl"></div>
// </div>
//
app.controller('ParentCtrl', function ($scope) {
$scope.x.title = 'Some title';
});
app.controller('ChildCtrl', function ($scope) {
console.log($scope.x.title);
});
しかしcontroller as
と:しかし、私は1つが、もはや直接、親コントローラの変数を使用することはできませんcontroller as
構文を使用して、私は何を意味する($スコープ付き)古い方法で、私はこれを行うことができ、あることに驚きました、私はこの(このquestionのおかげで)しなければならない。なぜなら1)
// <div ng-controller="ParentCtrl as pc">
// <div ng-controller="ChildCtrl as cc"></div>
// </div>
//
app.controller('ParentCtrl', function() {
this.x.title = 'Some title';
});
app.controller('ChildCtrl', function ($scope) {
console.log($scope.pc.x.title);
});
これは非常に迷惑です。 htmlページで親コントローラの名前がpcであることを知っておく必要があります。 2)。私は一括検索を実行することはできません$scope => vm (or this)
のため、プロパティが継承されている場合は動作しませんので、置き換えます。
誰でもcontroller as
が導入されたときの背後にある根本的な理由を教えてください。
私はスコープ継承の多くを使用する場合私は右controller as
避ける必要がありますか?または、スコープ継承は一般的に有害であると考えられているため、推奨できませんか?
:myPaneコントローラの内部で使用すると、
this.tabsCtrl
として、親コントローラにアクセスすることができますし、重要なのは、それは名前が親コントローラのためではなく、親を使用するかを決定子であることに注意してください実際のコードでは、隠された親の問題を回避するドット構文の古いイディオムに従います。私はこれを反映するために私の質問を更新しました。私はあなたが良い解決策であると確信していますが、コンポーネントを使用するために私のアプリケーションを移行することはかなり大きな変化であり、私はコントローラーが低い垂木であると思っていました...(私は、探偵はDOMの変更によく使われます) – swang@swangはい、controllerAsは間違いなく最初のステップですが、あなたはまだ親を見つけるために範囲をクロールしなければならないということを受け入れる必要があります。このステップを完了すると、スコープのクロールを削除するコンポーネントがコンポーネントになります。適切な要約については、http://ngmigrate.telerik.com/from-ng-controller-to-component-classesを参照してください。 – Duncan