2016-05-12 12 views
0

私のアプリには奇妙な動作があります。angularjs - 親スコープは作成されていませんが、まだページに表示されています

基本的には、詳細と呼ばれるメインページがあり、内部にはdetailsAlldetailsEditと呼ばれるサブビューがあります。

デフォルトの値はdetailsAllです。

私はdetailsEditdetailsAllからナビゲートするアプリを使用する場合は、すべては私がdetailsEditから直接アプリをロードする場合は、detailsからスコープが定義されていない、正常に動作します。

未だ定義されていないのに(console.logが定義されていない)私はまだページに印刷されたデータを見ることができるのはなぜですか?

より良い例がここにあります:#/app/1(hard coded for test only)/edit/day/1ので、最初のページには、detailsEditのサブビューです:あなたがアプリをAPENときhttps://plnkr.co/edit/qBtT5gkVSkYfjbngZVqw?p=preview

ので、URLは以下の通りです。

ご覧のとおり、(親から作成された)onlyOneというスコープはページに表示されますが、同じ正確なスコープはコンソールでは未定義に戻ります。

$scope.test = $scope.onlyOneと同じです。何も表示されませんが、黄色いボタンを使用して別のものを選択すると、それは機能します。

実際に動作しているのが分かりやすいので、上記のプランナーを参照してください。

これはなぜですか?私はキャッシュに関連するものだったが、ハードリセットを試みて何も変わっていない。

助けが必要ですか?親スコープは、プロパティを持っている場合は、事前

答えて

1

おかげで、その後、子供はそれはそれはそれ自身のプロパティを作成し、そこに空の値を割り当てます他の値、だ継承します。後で、親が同じプロパティを定義している場合、子は親の値を無視します /app/1/edit/day/1を開いたばかりの場合、子の$scope.onlyOne{}で初期化されています親の$scope.onlyOneは、非同期呼び出しであるため、後の時点で初期化されます。これがあなたが直面している問題の理由です。

一つの解決策は、非同期呼び出しが

https://plnkr.co/edit/9jS9qcwgecEJzqsD8L0z?p=preview

+0

を完了するが、私は実際に中に再作成範囲にTY場合でも、なぜ親にリスナーを追加し、子供に値を伝播することですそれはまだ動作しない親に同じスコープを作成する同じコードを使用して子ですか? – Nick

+0

のコースは動作しています。https://plnkr.co/edit/rwxkOXEbfM0z1jOTWEHo?p=preview – CodingNinja

+0

メモリを作成するのは悪い習慣です。これを達成するためには、あなたはそれが最も効果的な方法であると思いますか? – Nick

関連する問題