最近、1.0.8 から Angular の最新の安定バージョン (執筆時点では 1.2.19) に移行しました。
彼らは、孤立したスコープに関する厄介なバグを修正しました。私はアプリケーションを修正することができましたが、現在、「このプロパティが $scope にある場合、...」というような (多くの) 問題が発生しています。
ViewModel に共通の構造を定義したため、これらの問題が発生しています。これは、この構造を使用するディレクティブがそのスコープに「一意でない」プロパティを設定することを意味します。アップグレードの前は、バグが原因で、分離されたスコープはその子からアクセスできましたが、プロトタイプの継承が壊れていました。それこそが、私たちのアプローチがうまくいった理由です。
これは、アプリケーションがどのように機能するかを非常に単純化したビューです (Angular の古いバージョンと新しいバージョンの両方で有効です)。
<a-directive-with-scope>
I've put the variable foo on my $scope, see: {{foo}}
<a-directive-with-scope>
I've also put the variable foo on my $scope, see: {{foo}}
</a-directive-with-scope>
</a-directive-with-scope>
問題は、ディレクティブが常に $scope に同じプロパティを設定するとは限らず、バックエンドから返される内容に依存することです。したがって、内部ディレクティブで、そのスコープにプロパティがあるかどうかを確認したいとしましょう。そのスコープにid
プロパティがなくても、彼の親には true が返されます。
JavaScript では、次を使用してこの種の問題を回避できます。
if($scope.hasOwnProperty("id")) { ...
ngShow
しかし、修正またはngHide
ディレクティブに対して同じアプローチは可能ですか? (上で説明したように) プロトタイプの継承のため、現在ng-show="id"
は機能しません。