2015-06-06 111 views
1

我有一个父控制器,我设置了一个实例化对象的链接。我为一个属性赋予一个我想在另一个函数内改变的值。但是,当我在instagramModel中设置变量时,links.imagesa不会更新。角度父范围变量不变

我在控制台中输出值并且父代显示不会更新。我以为我遵循了原型继承的规则。

为什么$ scope.links.imagesa没有更新?

.controller('HomeCtrl', function HomeController($scope, titleService, config, $sails, $timeout, $upload, leafletData, $modal, $log) { 

    $scope.links = {}; 
    $scope.links.imagesa = "This should change"; 

    $scope.instagramModal = function (size) { 

     var modalInstance = $modal.open({ 
      templateUrl: 'instagramModal.html', 
      controller: 'InstagramModalInstanceCtrl', 
      size: size, 
      resolve: { 
       items: function() { 
        return $sails.get("/instagram/self").success(function (response) { 

         return response.data; 

        }).error(function (response) { 
         console.log('error'); 
        }); 
       } 
      } 
     }); 

     modalInstance.result.then(function (selectedItem) { 
      $scope.links.imagesa = "wept";     

     }, function() { 
      $log.info('Modal dismissed at: ' + new Date()); 
     }); 
    }; 

    $scope.ask = function() { 
     console.log($scope.links.imagesa); 
    }; 

}); 

回答

0

如果你想在父母的范围得到更新,则必须使用$范围。$ parent.links.imagesa因为儿童范围所做的更改不会在父范围直接反映。

+0

你的答案给出 - 未定义不是一个对象(评估'$范围。$ parent.links.imagesa =“wept”') – TommyK

+0

确保你有范围之间的父子层次结构或可能是links.imagesa不存在在父范围内。 –

0

默认情况下,角度用户界面的模式使用$ rootScope。请参阅“http://angular-ui.github.io/bootstrap/#/modal”处的文档

当您打开模式时,可以将范围参数与自定义范围一起传递 - 例如,范围:$ scope,如果你想传递父范围。模态控制器将从该范围创建一个子范围,因此您只能将其用于初始值。

因此,如果您想更新任何值,请将对象/数据保存在rootScope中。

希望这有助于!

0

我已经在UI路由器中实例化了HomeCtrl,并且还在使用ng-controller的模板页面上实例化了HomeCtrl。这弄乱了范围。