2

最近、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"は機能しません。

4

0 に答える 0