0

ng-include に含まれる te​​mplate.html にディレクティブがあります。このディレクティブでスコープを変更しますが、私の見解では変更されません。

これが私のhtmlです

<div ng-controller="myCtrl">
    <div id="modal">
        <div ng-show="showDIv">Somthing to controll</div>
    </div>
    <div ng-include src="template.html">
</div>

これが私のテンプレートです

 <a ng-support></a>

そして、これが私の指示です

app.directive('ngSupport', function(){
    return {
        restrict: 'A',
        link: function(scope, elem, attr, ctrl) {
           elem.bind('click', function(e) {
               $("#modal").dialog({height:518,width:900,modal:true });
               scope.showDiv = true;
               scope.$apply();

            });
        }
    };
});

ビューに適用されないディレクティブのスコープを変更すると、誰でも助けてくれますか?

4

2 に答える 2

1

ng-include新しいスコープを作成するためscope.showDiv、ローカル スコープのみに影響します。アプリケーションをどのように構築したいかによっては、scope.$parent.showDiv代わりにアクセスを試すこともできますが、HTML のネストに依存するため、実際には将来の証明ではありません。

より良い解決策は、showDivプロパティを親スコープのオブジェクト内に格納することです。たとえばscope.ui = {}、このようにscope.ui.showDiv = trueディレクティブを設定すると、ローカル スコープにプロパティを追加する代わりに、(プロトタイプの継承を使用して) 親スコープが自動的に検索されます。

最後に、別の解決策は、コードをリファクタリングして複雑さを軽減することです。1 つの要素を追加するためだけに ng-include を使用するのはやり過ぎだと思い<a ng-support></a>ます。html 内に直接配置すると、仲介者の問題を回避できます。スコープが生成されます。

于 2013-08-01T10:08:38.540 に答える