0

假设我有这个:

<div class="dostuff" some-obj="parentScopeObj">

sAngular.app.directive('dostuff', ['$compile', function($compile){
  return   {
    restrict : 'C',
    scope: { someObj : '=' },
    link : function(scope, element, attrs){  
      element.click(function(){
        scope.parentScopeObj = scope.someObj;
        scope.parentScopeObj.first = 'some modification';
        scope.$apply();
     });
    }

基本上,目标是拥有一个新的、隔离的 scope.parentScopeObj,如果您在指令的 scope.parentScopeObj 中修改内容并执行 $apply(),则修改不会传播到父范围的 parentScopeObj 变量。

我试过了。

  1. 只是一个简单的 scope.parentScopeObj = scope.someObj; 然而,如上所述,修改指令的 scope.parentScopeObj 仍将相应地传播到父范围的 parentScopeObj
  2. scope.parentScopeObj = angular.copy(scope.someObj); 然而,这导致我的浏览器在我使用的实际场景中崩溃,所以这是不行的
  3. scope.parentScopeObj = $.extend(true, {}, scope.someObj); 但是,修改指令的 scope.parentScopeObj 仍会相应地传播到父范围的 parentScopeObj

那么我如何才能对 scope.someObj 变量(与父级双向)进行深层复制,而无需与父级进行双向深层复制?angular.copy 是不行的,因为它始终使浏览器崩溃

4

0 回答 0