15

私がこれをするとします:

sAngular.app.directive('dostuff', ['$compile', function($compile){
  return   {
    restrict : 'C',
    scope: {
      someVar : '='
    },
    link : function(scope, element, attrs){  
      element.click(function(){
           //do stuff
        scope.someVar = 'somethingelse';
        var dropdownOutput = template();
        var compiledOutput = $compile(dropdownOutput)(scope);
        scope.$apply();
     });
    }    
  }
}]);

このディレクティブのスコープに親スコープから変数を継承させながら、それを「分離」スコープにする方法を教えてください。

たとえば、角度ドキュメントから:

= または =attr - attr 属性の値によって定義された name のローカル スコープ プロパティと親スコープ プロパティとの間の双方向バインディングを設定します。属性名が指定されていない場合、属性名はローカル名と同じであると見なされます。スコープのウィジェット定義: { localModel:'=myAttr' } を指定すると、ウィジェット スコープ プロパティ localModel は、親スコープの parentModel の値を反映します。parentModel への変更は localModel に反映され、localModel の変更は parentModel に反映されます。

ただし、その場合、「localModelの変更はparentModelに反映される」ため、そのディレクティブのスコープ内の変数を変更してからscope.apply()を実行すると、それに応じて親スコープと親テンプレートに反映されます変更で更新されます

また、パラメーターとして "scope : true" を実行しようとしましたが、スコープが変更され、その後に scope.$apply(); が続きます。元のスコープにも伝播します...

親スコープからスコープをコピーしても、そのスコープ内の変数の変更が親スコープに反映されないようにする方法はありますか?

4

1 に答える 1