0

私は次の問題を解決するために午後中ずっと試みてきました: 検索フォームを表示するディレクティブを作成しました。検索語のモデルはコントローラーで定義され、ディレクティブと完全に通信します。しかし:DOMの準備ができた後にロードされるAngularテンプレート内にディレクティブを配置すると、それはディレクティブへの1つの方法であり、戻ることはありません。

<body ng-app="myApp">
<div ng-controller="NewEditCtrl">

    <script type="text/ng-template" id="/tab-content.html">
    <!-- First position for the directive: The way back from the directive to here does not work -->
    <!-- Uncomment to test and show the console output ! -->

    <!-- <span mediasearch term="searchterm" enter="sendForm(e)" action="refreshAvailable()"></span> -->
    </script>
        <!-- Second position: Here the way back from the directive works perfectly -->
        <span mediasearch term="searchterm" enter="sendForm(e)" action="refreshAvailable()"></span>    
    <div id="tab-content" ng-include src="tabcontent"></div>

</div>

この例を実際のフィドルに入れました: http://jsfiddle.net/RCaCM/2/コメントをご覧ください。

スコープの問題だと思いますが、$apply や $compile ではポイントに達しません。

よろしくお願いします。XL

4

2 に答える 2

1

@Sebastien が指摘したように、ng-include は子スコープを作成します。オブジェクトをバインドする必要があり、それは機能します。更新されたフィドルを参照してください。

http://jsfiddle.net/cmyworld/JC28H/

を使用する代わりに、次のsearchtermようなものを使用します

$scope.searchterm={value:''}
于 2013-08-21T17:10:13.040 に答える
0

そうです、それはスコープの問題です: ng-includeangular を使用すると、子スコープが作成されます。したがって、親スコープでプロパティを変更すると、子の値も変更されますが、反対側では変更されません。両方をリンクしたい場合は、中間サービスを使用する必要があります

別の方法として、ディレクティブから親スコープに変更を発行し、メイン スコープ (またはルートスコープ) でリッスンすることもできます。

http://jsfiddle.net/RCaCM/3/

于 2013-08-21T16:55:36.823 に答える