コントローラーの3つの異なるスコープで使用される指令があります。今私はあるディレクティブで関数を呼び出すと、他のディレクティブの値が変更されます。上記のコードでコントローラーから指令値を変更する
// HTML
<my-directive instance-type="obj1"></my-directive>
<my-directive instance-type="obj2"></my-directive>
<my-directive instance-type="obj3"></my-directive>
// Directive
return {
restrict: 'E',
scope: {
controller: '=instanceType'
},
templateUrl: 'app/pages/class/templates/list.html',
link: function (scope, element, attrs) {
// Bind controller value
scope.currentId = scope.controller.currentId;
scope.nav = function(newId) {
scope.controller.nav(newId);
};
}
// Controller
$scope.obj1 = {};
$scope.obj2 = {};
$scope.obj3 = {};
$scope.obj1.nav = function(newId){$scope.obj2.currentId = newId;}
、iはディレクティブ1 nav
関数を呼び出すときディレクティブ2における可変currentId
は変化しません。
この問題を解決するにはどうすればよいですか?このディレクティブコードtrigerコントローラでそれを変更した場合trigerVariable
プランナーを作成してください。 –
スコープを使用します。$ apply();リンクの一番下にある:function –
分離スコープを使用しているため、値は2番目のディレクティブで変更されません。 2つの選択肢があります。本当にディレクティブにスコープを分離する必要がある場合は、分離スコープを削除するか、サービスを使用してディレクティブ間で状態を共有してください。 – Sarathy