次の安定した AngularJS のリリースの時点で、アプリケーションをバージョン1.0.8から1.2に移行しています。
AngularJS 1.0.8では、 のようなディレクティブに分離スコープを設定することができましたfollow
。test()
ディレクティブは、コントローラーの関数の代わりに独自の関数を使用しtest()
ます。
HTML
<my-dialog property="something">
<button ng-click="test()">Load Test</button>
Check out the test: "{{ testMessage }}"
</my-dialog>
Javascript
.controller('Ctrl', function(scope) {
scope.test = function () {
scope.testMessage = 'CTRL Test loaded! Whooops.';
}
})
.directive('myDialog', function() {
return {
restrict: 'E',
scope: {
property: '='
},
link: function(scope) {
scope.test = function () {
scope.testMessage = 'Isolated Test loaded. Yes!';
}
}
};
AngularJS 1.2では、この動作は機能しなくなりました。ボタンをクリックすると、コントローラーのtest()
関数が起動します。
この jsFiddle の比較を参照してください。
正確には何が変更され、以前の動作を再現するにはどうすればよいですか?
ノート
ディレクティブ テンプレートを追加の HTML ファイル内に配置するか、それを文字列としてコンパイルして動作させることができることがわかりました ( jsFiddle )。 HTMLファイルは面倒です。
編集
共有するプロパティが他にない場合、@elclanrの答えはうまく機能します。任意のプロパティを渡すように jsFiddleを更新しました。今、どのように進めればよいですか?